DB_new: mysql: abfrage nach elementen die nicht in einer Tabelle enthalten sind

Hallo,

hab' da mal 'ne Frage: habe eine MySql-DB (version??) mit mehreren Tabellen

t_1: id1 - Name - foo

t_2: id2 - irgendwas - und noch was

t_3: id3 - id1 - id2 - weitere Felder

Jetzt möchte ich eine Abfrage machen deren Ergebnis erstmal alles aus t_3 auflistet und dann alle Elemente aus t1 und t2, die nicht in t3 enthalten sind:

Die erste Abfrage ist kein Problem. Aber wie kann ich z.B. t_1 Abfragen nach alle Elemente außer denen die schon bei der ersten Abfrage (über t_3) gefunden wurden?

Danke schon mal an die Db Spezialisten ;-)

Grüßle Susanne

  1. t_1: id1 - Name - foo

    t_2: id2 - irgendwas - und noch was

    t_3: id3 - id1 - id2 - weitere Felder

    Aber wie kann ich z.B. t_1 Abfragen nach alle Elemente außer denen die schon bei der ersten Abfrage (über t_3) gefunden wurden?

    select * from t_1 where t_1.id1 not in (select id1 from t_3);
    

    Falls t_3.id1 null-Werte enthält, muss die Unterabfrage um "where id1 is not null" ergänzt werden.

    1. select * from t_1 where t_1.id1 not in (select id1 from t_3);
      

      Hi Regína, danke für den Tipp - werde ich nachher gleich mal ausprobieren, wobei ich mir nicht sicher bin, ob ich in meiner MySql Version subquerys machen kann (ist eine alte WAMP Umgebung in der ich arbeite - muss ich dringend mal updaten) Auf alle Fälle DANKE! Susanne

  2. Hallo und guten Morgen Susanne,

    Jetzt möchte ich eine Abfrage machen deren Ergebnis erstmal alles aus t_3 auflistet und dann alle Elemente aus t1 und t2, die nicht in t3 enthalten sind:

    Die erste Abfrage ist kein Problem. Aber wie kann ich z.B. t_1 Abfragen nach alle Elemente außer denen die schon bei der ersten Abfrage (über t_3) gefunden wurden?

    Das hängt ganz davon ab, ob zwischen den Tabellen eine Relation besteht. Dazu benötigt man entweder einen gemeinsamen Schlüssel oder gemeinsame Kriterien, über die die Datensätze miteinander verbunden werden können. Der Schlüssel müsste also in jeder Tabelle genau dieselben Entitäten betreffen, auch wenn jede Tabelle andere Eigenschaften dafür liefert.

    Grüße
    TS

    --
    es wachse der Freifunk
    http://freifunk-oberharz.de
    1. Jetzt möchte ich eine Abfrage machen deren Ergebnis erstmal alles aus t_3 auflistet und dann alle Elemente aus t1 und t2, die nicht in t3 enthalten sind:

      Die erste Abfrage ist kein Problem. Aber wie kann ich z.B. t_1 Abfragen nach alle Elemente außer denen die schon bei der ersten Abfrage (über t_3) gefunden wurden?

      Das hängt ganz davon ab, ob zwischen den Tabellen eine Relation besteht. Dazu benötigt man entweder einen gemeinsamen Schlüssel oder gemeinsame Kriterien, über die die Datensätze miteinander verbunden werden können. Der Schlüssel müsste also in jeder Tabelle genau dieselben Entitäten betreffen, auch wenn jede Tabelle andere Eigenschaften dafür liefert.

      Hi, ja t_3 ist im prinzip die Verbindungstabelle zwischen t_1 und t_2 über eindeutige ids der jeweiligen Tabellen (autoincrement, primary key) - war wohl inmeinem Beispiel nicht ganz klar, sorry. Werde heute nachmittag mal den Vorschlag von Regina versuchen, scheint genau das zu sein was ich wollte.