"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

mysql: frage zu join

kleinerChemiker 21.06.2005 - 18:52 617 5
Posts

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4281
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
ich mag eher die komplette schreibweise:
Code:
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
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
@watchout: da du dich sonst sehr gut auskennst, kannst du mir vllt den unterschied von deinem sql-befehl zu dem folgenden erklären?
Code:
SELECT * FROM alpha a, bravo b, charlie c WHERE a.ab = b.ab AND b.ab=c.ab

M.I.P.S.

Big d00d
Avatar
Registered: Mar 2002
Location: On the inside
Posts: 324
Zitat von tomstig
@watchout: da du dich sonst sehr gut auskennst, kannst du mir vllt den unterschied von deinem sql-befehl zu dem folgenden erklären?
Code:
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

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
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
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
@tomstig: So was schreiben nur Oracle-Coder. Mittlerweile kann Oracle vermutlich auch INNER JOIN, aber Version 7 konnte es noch nicht, IIRC.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz