[mysql] Kunden selektieren, die keine Produkte bestellt haben?



  • Hallo
    also ich habe 2 Tabellen:

    -----------
    kunden
    -----------
    ID  |  name
    
    --------------------------
    produkte
    --------------------------
    ID  |  kunden_id | bezahlt
    

    Zu selektieren, welche Kunden Produkte bestellt haben ist ja ganz einfach:

    SELECT DISTINCT kunden.ID where kunden.ID=produkte.kunden_id;
    

    Wie kann man jetzt aber die Kunden selektieren, die keine Produkte bestellt haben? Also die Kunden heraussuchen, deren IDs nicht in der Spalte produkte.kunden_id sind?

    Ist eigentlich ganz einfach - aber ich komme grade nicht drauf.

    Thx, devent.



  • Auch wenn das nichts mit Webzeugs zu tun hat sondern eher in das Forum "Datenbanken" passt:

    SELECT DISTINCT kunden.ID
      from kunden
     where kunden.ID NOT IN (SELECT kunden_id FROM produkte)
    

    Tntnet



  • SELECT  id
    FROM    kunden k LEFT JOIN
            produkte p ON (k.id = p.kunden_id)
    WHERE   p.kunden_id is null
    

    @tntnet das DISTINCT kannst Du Dir an so einer Stelle normalerweise sparen 😉



  • Auch wenn das nichts mit Webzeugs zu tun hat sondern eher in das Forum "Datenbanken" passt:

    ja hast Recht, sorry und danke.



  • Airdamn schrieb:

    SELECT  id
    FROM    kunden k LEFT JOIN
            produkte p ON (k.id = p.kunden_id)
    WHERE   p.kunden_id is null
    

    @tntnet das DISTINCT kannst Du Dir an so einer Stelle normalerweise sparen 😉

    Das habe ich mir auch gedacht. Ich habe es aus der origialen Query. Aus der Frage geht allerdings nicht explizit hervor, daß kunden.id eindeutig ist.


Anmelden zum Antworten