Benötige dringend Hilfe bei SQL-Abfrage
Hallo,
ich benötige dringend einmal Hilfe bei einer SQL-Abfrage: Ich habe 3 Tabellen. In der ersten Tabelle "kunden" stehen alle Kunden mit ID. In der zweiten Tabelle "response" steht ggf. ein Response. In der dritten Tabelle "ap" stehen die Ansprechpartner. Das Problem ist, das ich alle Kunden anzeigen lassen möchte, dessen ID nicht in der Tabelle "response" steht. Also alle Kunden, bei denen noch nichts eingegeben wurde. Eigentlich mit einer LEFT JOIN Abfrage kein Problem. Das eigentliche Problem ist, das in der Tabelle "kunden" ein Kunde ggf. mehrmals drin steht. Pro Ansprechpartner ein Datensatz. Diese haben zwar alle die selbe Kundennummer aber unterschiedliche ID's. Wenn nun ein Response eingegeben wird, erscheint die ID des Datensatzes in der Responsetabelle. Wenn ich nun eine LEFT JOIN Abfrage druchführe, dann erhalte ich diesen Kundendatensatz zwar nicht, aber dafür vielleicht zwei andere, weil dort noch Ansprechpartner existieren. Die Tabellen sind leider vom System her vorgegeben und ich kann Sie nicht verändern... (Leider) Modell (verkürzt): "kunden" ID NUMMER NAME 1 455 Max Mustermann AG 2 455 Max Mustermann AG 3 455 Max Mustermann AG 4 255 Hellmann AG 5 255 Hellmann AG "response" ID KUNDENID ART 1 2 Kontakt Kunde 455 hat also 3 Ansprechpartner. Mit einem wurde gesprochen. Ich will jetzt mit einer Abfrage (oder 2) erreichen, das ich nur noch Kunde 255 ausgeworfen bekomme... DANKE AN ALLE DIE SICH GEDANKEN MACHEN ODER LÖSUNGEN HABEN. Helge |
|
Danke für die schnelle Antwort.
Nur leider ist die dort beschriebene Abfrage die gleich, die ich bisher nutzte. Mein Problem ist, dass ich in einer Tabelle Datensätze habe, die aufgrund einer Kennung zusammengehören aber unterschiedliche ID's haben. Da nur diese ID in einer anderen Tabelle steht, ist das Problem, das dann auch nur der passende Datensatz aus der ersten Tabelle "rausfliegen" würde. Es soll aber das Zusammenhängende Paket nicht angezeigt werden. siehe Beispiel oben. Gruß, Helge |
> Die Tabellen sind leider vom System her vorgegeben und ich kann Sie
nicht verändern... (Leider) Wahrscheinlich habt Ihr den, der das gebaut hat, erschossen. Auf die Schnelle fällt mir nur ein Lösungsansatz ein: 1. Erstellen einer temporären Tabelle aus "kunden", in der die IDs und Namen der Kunden stehen, die auch in "response" sind. 2. Abfrage aus "kunden" : Alle Kunden, die nicht in der temporären Tabelle sind, Anzeige: GROUP BY / ORDER BY Name oder Nr. |
SELECT k.*,
FROM kunden k LEFT JOIN response r on r.kundenid = k.id WHERE r.kundenid is null group by k.nummer order by k.nummer asc |
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:08:07 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.