mysql: frage zu join
kleinerChemiker 21.06.2005 - 18:52 617 5
kleinerChemiker
Here to stay
|
ich habe 3 tabellen und will sie alle 3 über das feld account joinen. wie heißt das dann richtig?
SELECT * FROM a JOIN b JOIN c USING(account)
oder
SELECT * FROM a JOIN b USING(account) JOIN c USING(account)
tia
MIK
|
watchout
Legendundead
|
ich mag eher die komplette schreibweise: SELECT * FROM a
INNER JOIN b USING(ab)
INNER JOIN c USING(bc)
das braucht zwar vielleicht mehr platz, aber es is klarer was gemeint is zu deiner Frage: 1. wird nicht funktionieren.
|
tomstig
OC Addicted
|
@watchout: da du dich sonst sehr gut auskennst, kannst du mir vllt den unterschied von deinem sql-befehl zu dem folgenden erklären? SELECT * FROM alpha a, bravo b, charlie c WHERE a.ab = b.ab AND b.ab=c.ab
|
M.I.P.S.
Big d00d
|
@watchout: da du dich sonst sehr gut auskennst, kannst du mir vllt den unterschied von deinem sql-befehl zu dem folgenden erklären?
SELECT * FROM alpha a, bravo b, charlie c WHERE a.ab = b.ab AND b.ab=c.ab
Macht das selbe. Deine Version ist aber meiner Meinung nach leichter zu verwenden (vor allem wenn man mehrere Tables verwendet).
|
watchout
Legendundead
|
Vom result her eigentlich keinen - aber u.U. von der Runtime her - so gut kenn ich mich ehrlichgesagt nicht aus, aber ich denke dass MySQL besser Optimieren kann. [edit: vergessen...] Mit der Inner-Join schreibweise. Da die "komma Schreibweise" ja praktisch nur einen Full Join über die drei Tables darstellt hab ich nach dem From ein relativ grosses Result-Set, wohingegen beim Inner Join das Result-Set kleiner wird. Edit: Add: Zusätzlich hat man beim outer join mit MySQL Probleme weil es das "OR" schlecht Optimiert...
Bearbeitet von watchout am 21.06.2005, 20:51
|
Ringding
Pilot
|
@tomstig: So was schreiben nur Oracle-Coder. Mittlerweile kann Oracle vermutlich auch INNER JOIN, aber Version 7 konnte es noch nicht, IIRC.
|