Seite 1 von 1

SQL-Abfrage-Problem [erledigt]

Verfasst: 06.04.2014 00:04
von alter Mann
Ich habe 3 Tabellen und folgende Abfrage :

Code: Alles auswählen

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 ?

Re: SQL-Abfrage-Problem

Verfasst: 06.04.2014 11:11
von NicTheQuick
Ich müsste mich jetzt selbst noch mal genauer einlesen. Vor ein paar Jahren konnte ich es noch. :D Aber ich denke hier findest du den richtigen Weg und lernst dabei noch was: Einführung in SQL: Arbeiten mit JOIN

Re: SQL-Abfrage-Problem

Verfasst: 07.04.2014 12:49
von alter Mann
Danke für den Link. Ich schaue es mir mal an. Vielleich finde ich ja eine Lösung für mein Problem :) .

Re: SQL-Abfrage-Problem

Verfasst: 07.04.2014 14:14
von bobobo
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?

Re: SQL-Abfrage-Problem

Verfasst: 07.04.2014 16:46
von alter Mann
...hab ich vergessen zu erwähnen: das ist 'ne ODBC-Datenbank.

Re: SQL-Abfrage-Problem

Verfasst: 07.04.2014 17:23
von bobobo
ok .. ODBC ist "nur" eine Schnittstelle, das Datenbanksystem dahinter wäre interessant.

Falls du es nicht anders weisst. das kann man auslesen im ODBC-Manager .. dort der benutzte Odbc-Treiber.

Re: SQL-Abfrage-Problem

Verfasst: 07.04.2014 17:50
von alter Mann
... musste erst mal selber nachschauen :oops: - ist eine MS-Access Datenbank

Re: SQL-Abfrage-Problem

Verfasst: 07.04.2014 18:31
von bobobo
Wenn Du Access hast, dann kannst DU auch dort SQL "üben".

Das JOIN Zeugs geht da auch.

Infos gibt's bei Google
oder hier

Re: SQL-Abfrage-Problem

Verfasst: 08.04.2014 12:58
von shadow
Meinst du sowas hier?

Code: Alles auswählen

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).

Re: SQL-Abfrage-Problem

Verfasst: 08.04.2014 13:26
von alter Mann
@shadow : das IsNull() habe ich gesucht ! Danke :allright: .

Dank auch an bobobo und nick für die Links. Die werde ich mich mal zu Gemüte führen.