Seite 1 von 1

Verknüpfung von tabellen

Verfasst: Mo, 15. Nov 2021 8:23
von Manfred
Hi,
mal wieder eine Anfängerfrage:

Code: Alles auswählen

select fa.name,
	   fa.vorname
from fahrer fa
where abteilung like '%M%'
order by fa.name
das hier gibt mir alle Fahrer zurück, die ein "M" in abtielung stehen haben. So weit so gut.
Das muß erweitert werden auf

Code: Alles auswählen

select fa.name,
	   fa.vorname,
	   td.datum, 
	   td.dienstbez,
	   td.zeitvon,
	   td.zeitbis 
from fahrer fa
JOIN tagesdienst td ON td.nummer=fa.nummer
where abteilung like '%M%'
order by fa.name
und zwar so, das weiterhin alle Fahrer mit "M" angezeigt werden, aber ergänzend dazu wenn das Datum in td mit einer Vorgabe übereinstimmt auch die Felder für td. ausgefüllt werden. Ansonsten sollen sie einfach nur leer bleiben. Also wenn es in td Sätze gibt, dann den Inhalt anzeigen, ansonsten nur fa.
Also in Worte gefasst,
zeige mir alle Fahrer mit "M" in Abteilung, wenn aber in td Sätze für den Fahrer stehen, die zum Datum x passen, dann zeige mir den Inhalt der Spalten von td an. Wenn in td nichts gefunden wurde, dann lass die Angabe weg, aber zeige mir auf jeden Fall den Fahrer an, wenn da die Bedingung stimmt. Wie muß ich das Datum in td unterbringen?

Re: Verknüpfung von tabellen

Verfasst: Mo, 15. Nov 2021 12:16
von nightcrawler
LEFT OUTER JOIN?

Re: Verknüpfung von tabellen

Verfasst: Mo, 15. Nov 2021 12:31
von Manfred
ich hatte es mit LEFT JOIN versucht, das soll ja das gleiche sein. Ich habe es nicht hinbekommen. Es geht ja auch nicht darum was man benutzt, sondern wie man es einsetzt. Und da hapert es dann.

Re: Verknüpfung von tabellen

Verfasst: Mo, 15. Nov 2021 14:23
von Marcus Herz

Code: Alles auswählen

select fa.name,
	   fa.vorname,
	   td.datum, 
	   td.dienstbez,
	   td.zeitvon,
	   td.zeitbis 
from fahrer fa
JOIN tagesdienst td ON td.nummer=fa.nummer and td.datum = <wert woher?>
where abteilung like '%M%'
order by fa.name
Ich hab nicht erkennen können, wo das Datum herkommt, es muss aber in jedem Fall on die ON Bedingung, nicht in die WHERE

Re: Verknüpfung von tabellen

Verfasst: Mo, 15. Nov 2021 15:06
von Manfred
ok, das werde ich mal versuchen

Re: Verknüpfung von tabellen

Verfasst: Di, 16. Nov 2021 15:57
von nightcrawler
nur JOIN macht einen INNER JOIN, liefert die Fahrer also nur bei Vorlage eines passenden td Datensatzes. Mit LEFOT OUTER JOIN wird die linke Tabelle (=Fahrer) komplett genommen und bei passendem rechten Datensatz (=tagesdienst) was dazu gepackt. Falls ncihts vorliegt ist der Bereich eben NULL:

Code: Alles auswählen

select fa.name,
	   fa.vorname,
	   td.datum, 
	   td.dienstbez,
	   td.zeitvon,
	   td.zeitbis 
from fahrer fa
LEFT OUTER JOIN tagesdienst td ON td.nummer=fa.nummer
where abteilung like '%M%'
order by fa.name

Re: Verknüpfung von tabellen

Verfasst: Di, 16. Nov 2021 16:53
von Marcus Herz
Stimmt, ich hab LEFT nicht mitkopiert