[SQl] TWee records uit een andere tabel joinen

Pagina: 1
Acties:

  • mocean
  • Registratie: November 2000
  • Laatst online: 15-08 04:26
Titel klinkt wat vaag, maar het dekt de lading wel.
Ik probeer dus een recordset te maken, waaraan meerdere records uit eenzelfde tabel worden gestopt. Ik heb allereerst een tabel objects:
code:
1
2
3
4
5
6
Objects
ID Int
HandleName Char
Published Int
Parent Int
etc.


Daarnaast heb ik tabellen met eigenschappen (het is een OO Database structuur)
code:
1
2
3
4
5
tPropertiesChar
ID Int
ObjectID Int
PropertyType Int
Value Char


Met deze structuur kan ik aan een object allerlei eigenschappen koppelen. Eigenschappen leg ik vast in een andere tabel en daar verwijst PropertyType naar.
Ik heb nu 2 Properties nodig van het object: de Naam (type 1) en de SortOrder (type 2). En je raad het al, op die laatste moet ook gesorteerd worden. Één eigenschap koppelen is geen probleem:
code:
1
2
3
4
5
SELECT Objects.ID,  Objects.Parent, tPropertiesChar.Value
FROM Objects
LEFT JOIN tPropertiesChar ON tPropertiesChar.ObjectID=Objects.ID
WHERE Objects.Parent=6 
AND tPropertiesChar.PropertyType=1

Op deze manier komt de titel netjes terug in de Value. Wanneer ik de properties 1 & 2 in een keer in de WHERE zet, krijg ik dubbele rijen.
Ik vraag me dus af of het mogelijk is een tweede 'tPropertiesChar.Value' te selecteren, met dan de PropertyType 2. Dat ze dezelfde naam hebben kan wel worden voorkomen door 'tPropertiesChar.Value AS sortorder' te gebruiken.

Iemand tips?

Koop of verkoop je webshop: ecquisition.com


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Je kunt toch 2x de detail joinen, dmv. aliassen?

Who is John Galt?


  • mocean
  • Registratie: November 2000
  • Laatst online: 15-08 04:26
Dus zoiets?
code:
1
2
3
4
5
6
7
SELECT T1.ID,  T1.Parent, T2.Value AS prop1, T3.Value AS prop2
FROM Objects T1, tPropertiesChat T2, T3
LEFT JOIN T2 ON tPropertiesChar.ObjectID=Objects.ID
LEFT JOIN T3 ON tPropertiesChar.ObjectID=Objects.ID
WHERE Objects.Parent=6 
AND T2.PropertyType=1
AND T2.PropertyType=2

Ik dacht dat ik dat al geprobeerd had, en dat MySQL dan begint te zeuren over dubbele aliassen. Ik ga zo even de goede syntax vinden en testen

Koop of verkoop je webshop: ecquisition.com


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Bijna goed, ook de tabelnaam twee keer opnemen :)

Who is John Galt?


Verwijderd

mocean schreef op 12 May 2003 @ 17:40:
Dus zoiets?
code:
1
2
3
4
5
6
7
SELECT T1.ID,  T1.Parent, T2.Value AS prop1, T3.Value AS prop2
FROM Objects T1, tPropertiesChat T2, T3
LEFT JOIN T2 ON tPropertiesChar.ObjectID=Objects.ID
LEFT JOIN T3 ON tPropertiesChar.ObjectID=Objects.ID
WHERE Objects.Parent=6 
AND T2.PropertyType=1
AND T2.PropertyType=2

Ik dacht dat ik dat al geprobeerd had, en dat MySQL dan begint te zeuren over dubbele aliassen. Ik ga zo even de goede syntax vinden en testen
code:
1
FROM Objects T1, tPropertiesChat T2, T3

Vrij krom dit, probeer eens
code:
1
FROM Objects T1, tPropertiesChat T2, tPropertiesChat T3

Edit: Te laat :)

[ Voor 2% gewijzigd door Verwijderd op 12-05-2003 17:45 . Reden: te laat.. ]


  • mocean
  • Registratie: November 2000
  • Laatst online: 15-08 04:26
mmm, ik snap er geen bal meer van,
als ik dit doe:
code:
1
2
3
4
5
6
7
8
SELECT 
  T1.nObjects_nIDa,
  T2.Value
FROM tRelations T1, tPropertiesChar T2
LEFT JOIN T2 ON T2.nObjects_nID=T1.nID
WHERE T1.nObjects_nIDb=2
   AND T1.nRelationTypes_nID=2
   AND T2.nPropertyTypes_nID=4

Zegt Mysql: "Not unique table/alias: 'T2'"

Zie ik nu iets gigantisch over het hoofd of zo? Tijd om ff te relaxen denk ik...

Koop of verkoop je webshop: ecquisition.com


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 07-07 11:51
Als je een tabel joint onder een andere naam, gebruik dan:
code:
1
SELECT T1.kolom1, A2.kolom2 FROM T1 INNER JOIN T2 AS A2 ON ...
Met een beetje speuren in de manual kom je er wel uit.

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • mocean
  • Registratie: November 2000
  • Laatst online: 15-08 04:26
bigtree schreef op 12 mei 2003 @ 18:55:
Als je een tabel joint onder een andere naam, gebruik dan:
code:
1
SELECT T1.kolom1, A2.kolom2 FROM T1 INNER JOIN T2 AS A2 ON ...
Met een beetje speuren in de manual kom je er wel uit.
Thanks! Ik ben eruit gekomen. Met een JOIN hoef/moet je inderdaad niet de tabel die je joined in de FROM te zetten, maar met AS in de JOIN-regel werkt het prima!

Koop of verkoop je webshop: ecquisition.com

Pagina: 1