Max: 2 Tabellen Abfragen aus der gleichen Tabelle

Ich möchte folgendes erreichen und bitte um etwas Schützenhilfe. Es soll immer die ID und der Titel aller Datensätze ausgegeben werden. Wenn in der Spalte ZUORDNUNG ein WERT grösser 0 ist, also eine Zuordnung besteht, soll auch die Zuordnungs-ID und der ZuordnungsTitel ausgegeben werden. Bei mir klappt die Ausgabe nur mit den Einträgen in denen es eine Zuordnung gibt. Ich denke man müsste in der WHERE Abfrage noch eine WENN grösser NULL ist installieren.

Danke Max

id titel zuordnung
1 titel	0
2 titel 0
3 titel 1
4 titel 0

Die Ausgabe sollte so sein

ID Titel Zuordnung Titel
1 titel 0
2 titel 0
3 titel 1 titel
4 titel 0
SELECT
a.id, a.titel, 
b.id,
b.titel AS titel2
FROM
table a, 
table b 
WHERE 
b.zuordnung = a.id 
  1. Tach!

    Es soll immer die ID und der Titel aller Datensätze ausgegeben werden. Wenn in der Spalte ZUORDNUNG ein WERT grösser 0 ist, also eine Zuordnung besteht, soll auch die Zuordnungs-ID und der ZuordnungsTitel ausgegeben werden.

    Das klingt nach einem Left (Outer) Join. Siehe Einführung in Joins

    Bei mir klappt die Ausgabe nur mit den Einträgen in denen es eine Zuordnung gibt. Ich denke man müsste in der WHERE Abfrage noch eine WENN grösser NULL ist installieren.

    NULL und 0 sind zwei verschiedene Dinge. Meinst du wirklich NULL? Das kann man zwar auf größer/kleiner vergleichen, aber wann immer NULL im Spiel ist, ist das Ergebnis auch NULL.

    dedlfix.

  2. Hallo Max,

    schau mal ins Wiki, da gibt es auch eine Einführung in Joins. Du verwendest einen INNER JOIN, möchtest aber vielleicht einen anderen Join, z.B. den LEFT JOIN verwenden.

    Gruß, Dennis

  3. Danke... ich versuch mich mal in Euren Tipps

    1. Danke..

      Jetzt funktioniert es...

      Hier meine Lösung:

      SELECT 
      b.id, 
      b.titel,
      a.id AS id2,
      a.titel AS titel2
      FROM 
      table a
      right JOIN 
      table b ON a.id = b.zuordnung
      ORDER by b.titel ASC