LullaBy: MySQL Abfrage auf -nicht vorhanden-

Hallo Forum,

ich habe 2 Tabellen in einer MySQL-DB. Einmal Anschriften und einmal Ansprechpartner. Nun möchte ich die Liste der Ansprechpartner haben, die keine Anschrift in der Anschriften-Tabelle haben. In beiden Tabellen befindet sich das Feld "Kundennummer". Ich weiß jetzt nur nicht, wie die Abfrage aussieht?

SELECT ap.* FROM ansprechpartner.ap, anschriften as
WHERE ap.kundennummer = as.kundennummer
(geht ja schon nicht, weil ich davon ausgehe, dass es keine as.kundennummer gibt, die zu ap.kundennummer passt...)

müsste also sowas sein wie
WHERE ap.kundennummer NOT IN as.kundennummer
oder so.

Gibt es da einen Weg?

Vielen Dank für Lesen und Antworten,
LullaBy

  1. Hi,

    müsste also sowas sein wie
    WHERE ap.kundennummer NOT IN as.kundennummer
    oder so.

    ja ja, ziemlich genau sowas, du musst IN nur beibringen was seine Ergebnismenge zum Vergleich ist
    SELECT *
    FROM ansprechpartner
    WHERE kundennummer NOT IN (SELECT kundennummer FROM anschriften)

    MfG
    Rouven

    --
    -------------------
    Let Bygones Be Bygones  --  Robert Pitscottie: "Chronicles of Scotland"
    1. Hallo,

      nur zur Ergänzung:

      SELECT *
      FROM ansprechpartner
      WHERE kundennummer NOT IN (SELECT kundennummer FROM anschriften)

      Subselects werden ab MySQL 4.1 unterstützt.

      <hinweis type="gebetsmühle">
      Deswegen ist es bei Fragen zu MySQL immer eine gute Idee, die verwendete Version anzugeben. LullaBy, welche Version verwendest Du?
      </hinweis>

      Bei einer älteren Version läßt sich das ganze mit einem INNER JOIN und einer Prüfung auf IS NULL erreichen:

        
      SELECT  
          ap.*                  -- werden wirklich _alle_ Spalten benötigt?  
      FROM ansprechpartner ap  
      INNER JOIN anschriften as  
      ON ap.kundennummer = as.kundennummer  
      WHERE as.kundennummer IS NULL
      

      Freundliche Grüße

      Vinzenz

      1. yo,

        Bei einer älteren Version läßt sich das ganze mit einem INNER JOIN und einer Prüfung auf IS NULL erreichen:

        du meinst sicherlich einen OUTER JOIN....

        Ilja

        1. Hallo Ilja,

          Bei einer älteren Version läßt sich das ganze mit einem INNER JOIN und einer Prüfung auf IS NULL erreichen:

          du meinst sicherlich einen OUTER JOIN....

          *rot werd* selbstverständlich. Ich bin müde, ich bin unkonzentriert, ich sollte mal Urlaub machen ...

          Beschämte Grüße

          Vinzenz

          1. yo,

            *rot werd* selbstverständlich. Ich bin müde, ich bin unkonzentriert, ich sollte mal Urlaub machen ...

            oder den programmierer klassiker, zigaretten und viel kaffee (in meinen fall ein leckeres bier). lass das mal mit dem rot werden, war zumindestens mir schon klar, dass du dich nur verschrieben hast. und wenn nicht, haben wir da noch zwei gute links was Joins betrifft, die ich dir empfehlen kann....

            Ilja