Distinct richtig ??
ErWeissEsNicht
- datenbank
Hallo zusammen!
Ich habe drei tabellen, in einer sind die Kunden, in einer die kundengruppen und in der letzten die verknüpfung kundengruppe zu kunde.
Jetzt möchte ich alle kunden zu verschiedener Kundengruppen herausbekommen.
Kunden können auch mehreren Kundengruppen angehören.
Wenn ich jetzt z.B. alle Kunden der Gruppe 1,2 und 3 auslese, klappt das auch, allerdings können Kunden dann ja auch doppelt aufgelistet werden.
Ist Distinct dann der Richtige Befehl für die Abfrage
z.B.
SELECT
DISTINCT(customer.mail)
FROM
customer
JOIN
groups_customer ON groups_customer.customer_id = customer.id
WHERE
groups_customer.customer_id = 1
OR
groups_customer.customer_id = 2
OR
groups_customer.customer_id = 3
Wäre es so richtig ?
Danke für Eure Hilfe
EWEN
Hallo,
Jetzt möchte ich alle kunden zu verschiedener Kundengruppen herausbekommen.
SELECT
DISTINCT(customer.mail)
Nein, du bekommst die unterschiedelichen mail-Adressen heraus. Falls zwei Kunden dieselbe Mail haben, gibt es aber nur eine Antwort.
Klingt zunächst spitzfindig, ich hatte aber so einen Fall. Ein Mensch mit einer Mail kann sich unter mehreren Veranstaltern anmelden. So wie im normalen Leben ein Mensch Mitglied in mehreren Vereinen sein kann.
Die Lösung ist nicht die richtige Antwort auf deine Frage. Du suchst DISTINCT(customer.id)
Kalle - und schnell wegduck
moin,
meine devise dazu ist immer: "joins sind böse". natürlich sind sie das nicht immer, aber wenn man mit diesem motto die sache angeht, dann hilft das einem ungemein. das problem bei joins ist, dass die anzahl der datensätze sich leicht vervielfachen kann, gerade bei m:n beziehungen. man kann dann zu mitteln wie DISTINCt greifen, ich würde es anders angehen, nämlich mit einer korrelierten unterabfragen.
SELECT customer.mail
FROM customer c
WHERE c.id IN (1,2,3)
AND EXISTS (SELECT NULL
FROM groups_customer gc
WHERE gc.customer_id = c.id
)
;
Ilja