SQL: Abfrageproblem - Abfrage über 3 Tabellen

ukyo184

Mitglied
Hallo,

folgende Situation:

Ich möchte eine Liste von Firmen inklusive Ansprechpartnern. Diese Liste soll den Firmennamen, die Firmenanschrift und die e-mail-Adresse sowie die Telefonnummer des Ansprechpartners enthalten.

Gegeben sind die Tabellen Kunde, Ansprech, Adressen.

Nun ist es so, dass es in der Tabelle Kunde eine Spalte Adressnummer und auch in der Spalte Ansprech eine Spalte Adressnummer gibt. In der Tabelle Adressen gibt es die Spalte Nummer. Die Tabelle Kunde ist also mit der Tabelle Adressen und die Tabelle Ansprech ist mit der Tabelle Adressen verknüpft.

Außerdem sind die Tabellen Kunde und Ansprech verknüpft. Dies ist so realisiert, dass es bei der Tabelle Ansprech eine Spalte Kundennummer gibt.

Mein Problem besteht nun darin, dass ich aus der Tabelle Adressen zum einen Daten herausziehen muss, die zum Kunden gehören (z.B. die Firmenanschrift) und zum anderen Daten, die zum Ansprechpartner gehören (email, telefon).

Meinem SQL-Verständnis nach, kann ich ja aber nur entweder die Adressdaten zum Kunden oder die zum Ansprechpartner ausgeben lassen, da Kunde und Ansprechpartner jeweils eine eigene Adressnummer haben. Da mein SQL-Verständnis aber eher gering ist, denke ich mir dass es eine Möglichkeit geben muss, dieses Problem zu lösen.

Ich hoffe es gibt hier jemand, der mir weiterhelfen kann.

Vielen Dank im voraus für eure Hilfe.

Gruß Ukyo
 
Das sollte mit LEFT JOIN und Aliastabellennamen möglich sein ggf. auch mit Subselects.
Ein Beispiel, was funktionieren könnte, müsstest Du allerdings erweitern für die Felder, die Du hast:
Code:
SELECT 
Kunde.Kundennummer,
Kunde.Name AS Kundenname,
Kundenadresse.Strasse AS KundenStrasse,
Kundenadresse.PLZ AS KundenPLZ,
...
Ansprech.Name AS Ansprechname,
Ansprechadresse.Telefon AS Ansprechtelefon
FROM Kunde 
LEFT JOIN Adressen AS Kundenadresse
ON (Kunde.Adressnummer=Kundenadresse.Nummer)
LEFT JOIN Ansprech
ON (Ansprech.Kundennummer=Kunde.Kundennummer)
LEFT JOIN Adressen AS Ansprechadresse
ON (Ansprech.Adressnummer=Ansprechadresse.Nummer)
 
Hi hpvw,

vielen dank für deine schnelle Antwort. Es hat jetzt nach einigem hin und her funktioniert.

Nur ist es hier bei mir so, dass ich eine Fehlermeldung bekam wenn ich
Code:
LEFT JOIN Adressen AS Kundenadresse
benutzt habe. Die Fehlermeldung lautete: "Allgemeiner SQL Fehler. Token Unknown - line 4, char 18 AS". Und das AS war genau an dieser o.g. Stelle. Sobald ich das AS weggelassen habe und einfach nur
Code:
LEFT JOIN Adressen Kundenadresse
geschrieben und die anderen LEFT JOINS auch angepasst habe, funktionierte es.

Unsere Anwendung setzt auf einem Interbase SQL Server 5.6 auf. Kann das an der Version / dem Typ des SQL-Servers liegen, dass es mit AS nicht funktioniert?

Oder gibt es noch andere bekannte Gründe, warum AS manchmal in diesem Zusammenhang nicht funktioniert?

Nochmals danke und Gruß Ukyo
 
Ich kenne Interbase nicht.
Da hier nie jemand zuschreibt, welche DB er benutzt, habe ich MySQL angenommen, das trifft nach der Häufigkeit der hier gefragten DBMS meistens zu.
SQL ist zwar ein Standard, unterscheidet sich je nach DBMS dennoch.

Gruß hpvw
 
Zurück