Manuel1889: Datensatz ausgeben wenn in deiner anderen tabelle nicht vorhande

Hallo

Ich brauche einen befehl für eine mysql abfrage:
ich habe 2 tabellen.
rechnungspositionen:
id, rechnungsnummer, preis, ...
rechnungsauswahl
rechnungsnummer, id_rechnungsposition, ...

die abfrage muss alles auswerfen, nur nicht wenn in der tabelle rechnungsauswahl die id_rechnungsposition mit der rechnungsnummer zusammenpasst.

das heißt. Im programm wird eine rechnungsposition ausgewählt und die id und rechnungsnummer in die tabelle rechnungsauswahl geschrieben. dieser datensatz soll danach in der abfrage nicht mehr erscheinen.

ich hoffe ich habe es verständlich geschrieben.

Danke
MfG
Manuel

  1. die abfrage muss alles auswerfen, nur nicht wenn in der tabelle rechnungsauswahl die id_rechnungsposition mit der rechnungsnummer zusammenpasst.

    Hallo!

    Ich denke durch die Rechnungsnummer sind die beiden Tabellen verbunden, dann sollte es mit einem einfachen INNER JOIN und einem WHERE NOT getan sein:

      
    SELECT [was immer du brauchst] FROM `rechnungspositionen` rp INNER JOIN `rechnungsauswahl` ra ON rp.`rechnungsnummer` = ra.`rechnungsnummer` WHERE NOT ra.`rechnungsnummer` = ra.`rechnungsposition`  
    
    

    mfg

  2. yo,

    das heißt. Im programm wird eine rechnungsposition ausgewählt und die id und rechnungsnummer in die tabelle rechnungsauswahl geschrieben. dieser datensatz soll danach in der abfrage nicht mehr erscheinen.

    typischer fall für einen OUTER JOIN, wobei du schauen musst, ob ich die Join -bedingung richtig umgesetzt habe:

    SELECT
    FROM rechnungspositionen rp
    LEFT JOIN rechnungsauswahl ra ON ra.id_rechnungsposition = rp.id AND ra.rechnungsnummer = rp.rechnungsnummer
    WHERE ra.id_rechnungsposition IS NULL
    ;

    Ilja