Join + where?

Dustin84

Erfahrenes Mitglied
Hallo,

kann mir jemand erklären, was dieses ON ist:
Code:
SELECT * FROM Mitarbeiter LEFT JOIN Projekte ON (Mitarbeiter.Nachname = Projekte.Nachname AND  Mitarbeiter.Vorname = Projekte.Vorname

Ich versteh das einfach nicht. Was bedeutet Mitarbeiter.Nachname = Projekte.Nachname ?

Desweiteren würde ich gerne noch wissen, wie ich an dem obigen Statement noch eine WHERE dranhängen kann, wo ich zusätzlich aber ein Feld aus einer DRITTEN Tabelle abfrage.

Gruß
D.
 
das ON ist bestanteil des LEFT JOIN. Das heuisst, dass du auch LEFT JOIN nicht verstehst. Suche mal mit Goggle nach LET JOIN und du wirst das ON sehen


Zum WHERE
Entweder hängst du das auch mit einem JOIN dran und schreibst am Schluss den WHERE oder du machst ein Subquery im WHERE-Bereich.

Darf ich fragen wieviel Erfahrung du mit SQL hast? Und was für eine DB das ist? MS SQL, MySQL, MS Access, Oracle oder sonstwas?
 
Die Erfahrung hält sich stark in Grenzen. Ich nutze XAMPP mit MySQL.

Wenn mir jemand dieses
ON Mitarbeiter.Nachname = Projekte.Nachname
kurz erklären würde, dann hilft das.
 
Es gibt eine Tabelle tabArtikel und eine Tabelle tabWarengruppen. Wenn nun als Ergebnis alle Artikel gewünscht werden, auch die Artikel die keiner Warengruppe zusortiert wurden, sieht dies als LEFT JOIN so aus: SELECT Artikelname, Warengruppenname
FROM tabArtikel LEFT JOIN tabWarengruppen
ON tabArtikel.[Warengruppen-Nr] = tabWarengruppen.Warengruppennummer;

Nur ein Beispiel...da steht nicht, was dieses verdammte ON ist.
 
Im ON-Teil sollten keine Bedingungen vorhanden sein, die zur Beschränkung der Datensätze in der Ergebnismenge verwendet werden; geben Sie solche Bedingungen besser in der WHERE-Klausel an. Es gibt aber Ausnahmen zu dieser Regel.

hilft alles nicht weiter...
 
überleg mal. Wenn man 2 Tabellen zusammenhängt. Was braucht man dabei unbedingt, damit nicht einfach jeder Datensatz der ersten Tabelle mit jedem Datensatz der 2ten Tabelle verknüpft wird?
Schu dir die Schreibweise mal genau an. Betrachte sie mit meiner Fragestellung.
SQL:
SELECT
	t1.*,
	t2.*
FROM
	table1 AS t1
	LEFT JOIN table2 AS t2 ON t1.id = t2.t1id
 
Zuletzt bearbeitet von einem Moderator:
Zurück