Hellihello
ob ich das korrekt verstanden habe?
Ich nehme vier Tabellen:
produkte, kunden, rechnungen, positionen.
alle haben eine ID,
Tabelle "rechnungen" hat die Spalte Kundennummer, die die kunden.ID referenziert.
Tabelle "positionen" referenziert mit Spalte RechnungsID und ProduktID die jeweiligen rechnungen.ID und produkte.ID (die Spalte "Anzahl" sorgt dann für die Sinnhaftigkeit der Zuordung).
Nun möchte ich alle Positionen anzeigen, mit den jeweiligen Rechnungs, Kunden und Produktdaten.
Einmal mit WHERE:
SELECT
produkte.ID AS prodID,
kunden.ID AS kundenID,
rechnungen.ID AS rechnID,
rechnungen.Kundennummer AS rechnKdID,
positionen.ID AS posID,
positionen.RechnungsID AS posRechnID,
positionen.ProduktID AS posProdID
FROM
positionen, produkte,kunden,rechnungen
WHERE
positionen.RechnungsID = rechnungen.ID
AND
rechnungen.Kundennummer = kunden.ID
AND
positionen.ProduktID = produkte.ID
mit JOIN:
SELECT
produkte.ID AS prodID,
kunden.ID AS kundenID,
rechnungen.ID AS rechnID,
rechnungen.Kundennummer AS rechnKdID,
positionen.ID AS posID,
positionen.RechnungsID AS posRechnID,
positionen.ProduktID AS posProdID
FROM
positionen
INNER JOIN rechnungen
ON
(
positionen.RechnungsID = rechnungen.ID
)
INNER JOIN kunden
ON
(
rechnungen.Kundennummer = kunden.ID
)
INNER JOIN produkte
ON
(
positionen.ProduktID = produkte.ID
)
Ist eins von beidem "besser"? Ist da was falsch in dem Ansatz? Der Test hat funktioniert soweit. Gibts da noch Denkanstöße zur Herangehensweise oder Codeverbesserung oder sonstwas (abgesehen von der etwas beliebigen Variablen-Benennung). Die beiden Artikel hier unter "aktuell" auch von Vinzenz hab ich gelesen.
Dank und Gruß,