PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQL/MySQLi (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Benötige dringend Hilfe bei SQL-Abfrage (http://www.selfphp.de/forum/showthread.php?t=7224)

nightflasher 19.03.2004 10:43:22

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

Marilu 19.03.2004 10:47:27

So was ähnliches hatten wir letzt:

http://www.selfphp3.de/forum/showthr...&threadid=7185

nightflasher 19.03.2004 10:56:48

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

Marilu 19.03.2004 14:21:56

> 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.

MiH 24.03.2004 09:35:04

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 10:45:12 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.