Verknüpfung von tabellen

Alles zum SQL-Dialekt

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Verknüpfung von tabellen

Beitrag 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?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Verknüpfung von tabellen

Beitrag von nightcrawler »

LEFT OUTER JOIN?
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Verknüpfung von tabellen

Beitrag 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.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Verknüpfung von tabellen

Beitrag 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
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Verknüpfung von tabellen

Beitrag von Manfred »

ok, das werde ich mal versuchen
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Verknüpfung von tabellen

Beitrag 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
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Verknüpfung von tabellen

Beitrag von Marcus Herz »

Stimmt, ich hab LEFT nicht mitkopiert
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Antworten