kai: mysql anfängerfrage

hallo zusammen,

ich bräuchte eine mysql abfrage die mir aus 2 tabellen die
datensätze ausspukt die nur in einer vorkommt.
ich meine sowas wie 'left join' in dem zusammenhang mal gelesen zu haben. kann mir da jemand weiterhelfen ?

also tabelle a und b haben beide ein feld 'id' das in beiden gleich
belegt ist.. nun will ich aus b alle id´s die in a nicht vorkommen
geht das ?

danke schonmal
kai

  1. Hallo Kai,

    ich bräuchte eine mysql abfrage die mir aus 2 tabellen die
    datensätze ausspukt die nur in einer vorkommt.
    ich meine sowas wie 'left join' in dem zusammenhang mal gelesen zu haben. kann mir da jemand weiterhelfen ?

    Das ist eine Möglichkeit, Subselects (MySQL 4.1 oder höher erforderlich) eine weitere.

    also tabelle a und b haben beide ein feld 'id' das in beiden gleich
    belegt ist.. nun will ich aus b alle id´s die in a nicht vorkommen
    geht das ?

    Ja.

    SELECT a.id, b.id
    FROM b
    LEFT OUTER JOIN a
    ON a.id = b.id

    liefert Dir alle Datensätze aus b mit den zugehörigen Entsprechungen in a.
    Gibt es in a keine Entsprechung, so steht in a.id der Wert NULL. Die notwendige WHERE-Klausel solltest Du selbst hinkriegen. [1]

    Freundliche Grüße

    Vinzenz

    [1] Vergleich mit NULL erfolgt mittels IS NULL, _nicht_ mit dem Gleichheitsoperator.

    1. vieln dank das isste :-)

  2. Hi Kai,

    da gibt es zwei Möglichkeiten:

    1.) select id from tabelle_b where id not in (select id from tabelle_a);

    2.) select id from tabelle_b minus select id from tabelle_a;

    zu 1.)

    Hier werden nur die id's aus Tabelle_b ausgegeben, die nicht in tabelle_a vorkommen.

    zu 2.)

    Stell Dir einen Topf voller ID's vor. Das sind die ID's von Tabelle_b. Das Minus zieht nun alle die ID's aus dem Topf, die in tabelle_a vorkommen. Was im Topf übrig bleibt, sind die ID's, die nur in tabelle_b vorkommen.

    Gruß

    Hans

    hallo zusammen,

    ich bräuchte eine mysql abfrage die mir aus 2 tabellen die
    datensätze ausspukt die nur in einer vorkommt.
    ich meine sowas wie 'left join' in dem zusammenhang mal gelesen zu haben. kann mir da jemand weiterhelfen ?

    also tabelle a und b haben beide ein feld 'id' das in beiden gleich
    belegt ist.. nun will ich aus b alle id´s die in a nicht vorkommen
    geht das ?

    danke schonmal
    kai

    1. vieln dank das isste :-)

    2. echo $begrüßung;

      2.) select id from tabelle_b minus select id from tabelle_a;

      Das ist keine in MySQL funktionierende Möglichkeit.

      echo "$verabschiedung $name";