2 SQL-Abfragen in eine umwandeln

Scrapy

Mitglied
Ich habe eine Tabelle mit Artikeln und eine mit Teilen.
Es gibt Artikel, die kein Teil haben, deshalb habe ich sie in der Teil-Tabelle nicht aufgeführt.
Aber wie kann ich das ganze über ein SELECT auslesen?

Ich mache das momentan so:
Code:
 SELECT Name, TeilID FROM Artikel;
 SELECT ID, Name FROM Teil;
Dann füge ich die Teile mit meinem Programm in die Artikel ein.

Die folgende Abfrage würde bei einigen Artikeln nicht funktionieren, da die Teil-ID -1 sein würde.
Code:
 SELECT Artikel.Name, Teil.Name FROM Artikel, Teil WHERE Artikel.TeilID=Teil.ID;

Allerdings funktioniert diese Anfrage genauso wenig:
Code:
  SELECT Artikel.Name, Teil.Name FROM Artikel, Teil WHERE Artikel.TeilID=Teil.ID OR Teil.ID=-1;


Habt ihr eine Idee?
 
Hi
Scrapy hat gesagt.:
Allerdings funktioniert diese Anfrage genauso wenig:
Code:
  SELECT Artikel.Name, Teil.Name FROM Artikel, Teil WHERE Artikel.TeilID=Teil.ID OR Teil.ID=-1;

Code:
  SELECT Artikel.Name, Teil.Name FROM Artikel, Teil WHERE Artikel.TeilID=Teil.ID OR Artikel.TeilID = null;

Wenn das nicht funktioniert:
Kannst du deine Aussage etwas präzisieren?
Was erwartest du und was kommt?
 
Ups, entschuldigung!

Ich gebe mal ein paar Beispieldatensätze an:

Code:
 Tabelle: Artikel
 
 ID: |Name:  |TeilID:
 ----+-------+--------
 0   |Box1   |1
 1   |Box2   |0
 2   |Kasten |2
 3   |Brief  |-1
 
 
 Tabelle: Teil
 
 ID: |Name:
 ----+----------
 0   |Nieten
 1   |Schrauben
 2   |Nägel

Mein Ziel wäre dann diese Tabelle:
Code:
 ID: |Name:  |Teil:
 ----+-------+----------
 0   |Box1   |Schrauben
 1   |Box2   |Nieten
 2   |Kasten |Nägel
 3   |Brief  |[NULL]

Mit der folgenden SQL-Abfrage bekomme ich alles doppelt und dreifach:
Code:
 SELECT Artikel.ID Artikel.Name, Teil.Name FROM Artikel, Teile WHERE Artikel.TeilID=Teil.ID OR Teil.ID=-1;

Momentan frage ich jede Tabelle einzeln ab und setze sie per Quelltext zusammen.
Das finde ich aber weniger schön - ich wollte eigentlich die Datenbank(HSQLDB) arbeiten lassen!

Irgendwo mache ich da einen großen Denkfehler, denn irgendetwas fehlt in der Select-Abfrage!
 
Code:
SELECT Artikel.ID, Artikel.Name, Teil.Name
FROM Artikel LEFT JOIN Teil ON Artikel.TeilID = Teil.ID;
 
Zuletzt bearbeitet:
Zurück