SQL Join ueber 3 Tabellen

Steapa

Newbie
Dabei seit
Dez. 2018
Beiträge
4
Hallo,

Ich hab eine Frage zu SQL-Joins.
Ich hab 3 Tabellen aus denen ich Daten abfragen moechte. Hier mal die vereinfachte Struktur:

t_customer
customer_id, customer_name

t_contact
contact_customer(=customer_id in t_customer), contact_email

t_license
license_customer(=customer_id in t_customer), license_active(true/false)

Es kann mehrere Kontakte zu einem Customer geben und es kann mehrere Lizenzen zu einem Customer geben.

Die Abfrage soll mir jetzt einfach eine Liste aller Kontakte und deren Firmennamen (customer_name) fuer die es Lizenzen mit license_active=true gibt.

Mit meinem, beschraenkten SQL-Wissen haette ich die Abfrage so geschrieben:

Code:
SELECT * FROM t_customer AS c, t_contact AS co, t_license AS l WHERE co.contact_customer=c.customer_id AND l.license_customer=c.customer_id
Diese Abfrage gibt mehr aber die Kontakte mehrfach zurueck, wenn sie mehrere Lizenzen haben auf die das Attribut license_active=true zutrifft.
Also muss wohl in irgend einer Form ein JOIN her ... Davon hab ich allerdings so gar keine Ahnung.

Kann da jemand helfen?
 

R O G E R

Commander
Dabei seit
März 2008
Beiträge
2.692
Hallo,
eine direkte Lösung kann ich dir jetzt nicht geben.
Aber hier ist eine gute erklärte seite für SQL mit Joins
https://de.wikibooks.org/wiki/Einführung_in_SQL:_Mehr_zu_JOIN

Der Zettel mit den ganzen Kinder und Eltern Beispielen liegt auch immer auf meinem Schreibtisch.
Hilft eigentlich immer wenn ich mal mit Joins arbeiten muss.
 

Lemmy Kilmister

Cadet 1st Year
Dabei seit
Juli 2011
Beiträge
13
Hi!

Du hast es schon richtig erkannt: Problem ist, dass es zu einem Kunden mehrere Datensätze in der Tabelle t_license geben kann.

Man muss hier gruppieren:

Code:
SELECT co.contact_customer, co.contact_email, c.customer_name
 FROM t_customer AS c, t_contact AS co, t_license AS l
 WHERE co.contact_customer=c.customer_id
   AND l.license_customer=c.customer_id
   AND l.license_active=true
  GROUP BY co.contact_customer, co.contact_email, c.customer_name
Gruß, Lemmy
 

Steapa

Newbie
Ersteller dieses Themas
Dabei seit
Dez. 2018
Beiträge
4
Sowohl das GROUP BY als auch das DISTINCT funktioniert einwandfrei.

Vielen Dank euch! :)

Gruss
 
Top