Einträge mit NULL-Verweis auf zweite Tabelle trotzdem anzeigen

Mat

Aktives Mitglied
Hat sich erledigt.

Ich habe bei einer Abfrage mit mehreren Tabellen-Joins in einer Rechnung keine Rechnungspositionen angezeigt bekommen.

Nachdem ich für das Forum eine vereinfachte Version des Problems formuliert hab, habe ich festgestellt, dass es eben doch mit einem LEFT JOIN gehen sollte, so wie erwartet, und das Problem woanders liegen muss.

Es hat sich am Ende herausgestellt, dass Rechnungspositionen nicht angezeigt werden können, wenn man die Rechnungspositionen vorher nicht angelegt hat.... :poop:


Das Beispiel, das ich für's Forum geschrieben hatte, kann ich ja trotzdem posten:

Dialekt ist Firebird, aber für das Beispiel habe ich hier einfach SQLite genommen:

Beispieldaten:
/* Struktur und Relationen */

-- 1 Person : 0..1 KFZModell
CREATE TABLE IF NOT EXISTS "Personen" (
    "id"    INTEGER,
    "name"    TEXT,
    "kfzmodell_id"    INTEGER,
    PRIMARY KEY("id" AUTOINCREMENT)
);

-- 1 KFZModell : 0..n Personen
CREATE TABLE IF NOT EXISTS "KFZModelle" (
    "id" INTEGER,
    "bezeichnung" TEXT,
    PRIMARY KEY("id" AUTOINCREMENT)
);

/* Daten */

-- Personen
INSERT INTO "Personen" VALUES (1,'Hans',1234);
INSERT INTO "Personen" VALUES (2,'Peter',NULL);
INSERT INTO "Personen" VALUES (3,'Ursula',1234);
INSERT INTO "Personen" VALUES (4,'Klaus',5555);

-- KFZModelle
INSERT INTO "KFZModelle" VALUES (1234,'Opel Corsa');
INSERT INTO "KFZModelle" VALUES (5555,'VW Golf');

/* Abfrage */
SELECT P.*, K.bezeichnung AS "Modell"
FROM Personen P
LEFT JOIN KFZModelle K ON P.kfzmodell_id = K.id

Das zeigt hier beim Test ganz normal alle Personen an, auch den Peter ohne Auto. :unsure:
 
Zurück
Oben Unten