mysql: frage zu join

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/mysql_frage_zu_join_144480/page_1 - zur Vollversion wechseln!


kleinerChemiker schrieb am 21.06.2005 um 18:52

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 schrieb am 21.06.2005 um 19:02

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 schrieb am 21.06.2005 um 19:42

@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. schrieb am 21.06.2005 um 20:44

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 schrieb am 21.06.2005 um 20:48

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... ;)


Ringding schrieb am 22.06.2005 um 20:07

@tomstig: So was schreiben nur Oracle-Coder. Mittlerweile kann Oracle vermutlich auch INNER JOIN, aber Version 7 konnte es noch nicht, IIRC.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026