frankx: JOIN und WHERE bei vier Tabellen

Beitrag lesen

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ß,

frankx

--
tryin to multitain  - Globus = Planet != Welt