Hallo Zusammen,
ich bin zwar nicht ungeübt mit SQL, aber ich wollte Euch fragen, welche Methode in bezug auf eine möglichst gute Laufzeit das beste ist.
Stellt Euch folgendes (vereinfaches abstraktes Beispiel) vor: Ein Einkaufszettel mit Stationen und je nach Staion unterschiedliche Einträge in unterschiedlicher Anzahl (0 bis ...).
Tabelen:
Tabelle LADEN (LadenName*, Route, Ort, Typ, usw.)
Tabelle ARTIKEL (LadenName*, Bezeichnung*, Preis, usw.)
* = Schlüssel
-> Es ist also so, daß ein Artikel genau einem Laden zugeordnet ist.
-> Der Einfachheit halber ist ein Laden auch genau einer Route zugeordnet.
Also könnte so was dabei rauskommen (es sollen auch die Stationen erscheinen, wo keine Artikel gefunden werden):
Aldi
- Mehl
- Honig
Karstadt
Rewe
Saturn
- Windows 7
So, und nun kann man das ganze mit einem LEFT OUTER JOIN machen:
Wenn ich jetzt nur nach einer Einkaufsroute abfrage, werden ja in der zweiten Abfrage (artikel1) auch die Artikel ausgewählt, die zu anderen Routen gehören - was ziemlich lange dauern könnte.
Andererseits könnte ich in der zweiten Abfrage noch mal eine Tabellenverknüpfung mit "Laden" machen, um schon nur die Artiekel herauszuholen, die nur zu der Route gehören. Das kostet aber auch Zeit.
Kann man das auch irgendwie mit IN machen?
Ich hoffe, ich habe das verständlich beschrieben.
Danke im Voraus,
der Vacca
ich bin zwar nicht ungeübt mit SQL, aber ich wollte Euch fragen, welche Methode in bezug auf eine möglichst gute Laufzeit das beste ist.
Stellt Euch folgendes (vereinfaches abstraktes Beispiel) vor: Ein Einkaufszettel mit Stationen und je nach Staion unterschiedliche Einträge in unterschiedlicher Anzahl (0 bis ...).
Tabelen:
Tabelle LADEN (LadenName*, Route, Ort, Typ, usw.)
Tabelle ARTIKEL (LadenName*, Bezeichnung*, Preis, usw.)
* = Schlüssel
-> Es ist also so, daß ein Artikel genau einem Laden zugeordnet ist.
-> Der Einfachheit halber ist ein Laden auch genau einer Route zugeordnet.
Also könnte so was dabei rauskommen (es sollen auch die Stationen erscheinen, wo keine Artikel gefunden werden):
Aldi
- Mehl
- Honig
Karstadt
Rewe
Saturn
- Windows 7
So, und nun kann man das ganze mit einem LEFT OUTER JOIN machen:
Code:
SELECT * FROM
(SELECT *
FROM laden
WHERE route = 1) AS laden1
LEFT OUTER JOIN
(SELECT *
FROM artikel) AS artikel1
ON laden1.LandenName = artikel1.LadenName
Wenn ich jetzt nur nach einer Einkaufsroute abfrage, werden ja in der zweiten Abfrage (artikel1) auch die Artikel ausgewählt, die zu anderen Routen gehören - was ziemlich lange dauern könnte.
Andererseits könnte ich in der zweiten Abfrage noch mal eine Tabellenverknüpfung mit "Laden" machen, um schon nur die Artiekel herauszuholen, die nur zu der Route gehören. Das kostet aber auch Zeit.
Kann man das auch irgendwie mit IN machen?
Ich hoffe, ich habe das verständlich beschrieben.
Danke im Voraus,
der Vacca