SELECT table1.name, table2.name, table3.name FROM table1, table2, table3 WHERE table2.id = table1.id2 AND table3.id1 = table1.id
nun fehlt in table3 evtl. der Verweis auf table1 und damit ergibt die Abfrage einen Fehler. Kann ich trotzdem das ganze in einer Abfrage abhandeln und für die fehlenden Einträge in table3 für table3.name irgendwelche Standardwerte ausgeben ?
Zuletzt geändert von alter Mann am 08.04.2014 13:27, insgesamt 1-mal geändert.
Ich müsste mich jetzt selbst noch mal genauer einlesen. Vor ein paar Jahren konnte ich es noch. Aber ich denke hier findest du den richtigen Weg und lernst dabei noch was: Einführung in SQL: Arbeiten mit JOIN
hjab nur "fehlende Werte" gelesen und da fiel mir sofort folgendes zu ein.
es gibt, je nach Datenbank Möglichkeiten NullWerte in tatsächlche Werte umzubiegen (hierbei den Datentypen beachten)
in MsSql ist das IsNulll
bei MYSQl Ifnull (dort gibts auch NullIf, also die Umwandlung von Werten nach NULL)
bei sqlite ifnull und/oder coalesce .. eventuell hilft hier auch CASE ...
Für PostgreS und andere gibt es sicher ähnliches
Ansonsten kennt SQL durchaus auch bedingungen mit if
---
um welches DB-System geht es denn?
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
SELECT t1.name, t2.name, IsNull(t3.name, "<n/a>") AS name
FROM table1 t1
JOIN table2 t2 ON t2.id = t1.id2
LEFT JOIN table3 t3 ON t3.id1 = t1.id
Der LEFT JOIN verbeindet die Tabelle table3 nur wenn eine Referenzierung über id1 möglich ist, sonst sind alle selektierten Werte bon table3 NULL. IsNull gibt dir <n/a> zurück, wenn die Spalte Name der table3 NULL ist (unter Informix-SQL ist das NVL).
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)