Hallo,
ich habe folgendes Problem: In einer Tabelle stehen Shop-Daten (produkt_ID, katalog_ID, anzahl, user_ID, datum). Nun will ich zur Ausgabe natürlich nicht nur die Produkt_ID ausgeben, sondern auch alle anderen Daten zu diesem Produkt (Preis, Produktname, Produktbeschreibung etc.). Diese stehen in vielen verschiedenen Katalog-Tabellen. Das wäre an sich ja alles noch kein Problem, nur dass ich zum Zeitpunkt der Abfrage nicht weiss, aus welcher Tabelle ich diese zusätzlichen Daten ziehen muss. Die Information steckt nämlich in der katalog_ID.
Ich habe bisher 3 Ansätze, die mich aber alle nicht wirklich zufrieden stellen:
1.: Eine Abfrage für die Shop-Daten, eine weitere pro Datensatz. Das würde bedeuten, dass ich bei 100 Produkten, 101 Abfragen hätte.
2.: Eine Abfrage für die Shop-Daten, verknüpft mit allen anderen Katalog-Tabellen, abhängig von der katalog_ID. Das sähe dann z.B. so aus:
SELECT
produkt_ID, katalog_ID, produktbeschreibung, preis
FROM
shoptabelle
LEFT JOIN katalog1 ON katalog1.produkt_ID = shoptabelle.produkt_ID AND katalog_ID = 1
LEFT JOIN katalog2 ON katalog2.produkt_ID = shoptablelle.produkt_ID AND katalog_ID = 2
LEFT JOIN ...
Das sieht an sich schon ganz gut aus, da ich ja nur eine Abfrage hätte. Das Problem ist aber, dass es nicht nur ein oder zwei weitere Kataloge gibt, sondern um die 100. Es würde also eine riesen Abfrage entsehen.
3.: Ich mache eine Abfrage für die Shop-Daten sortiert nach katalog_ID und mache dann immer eine zusätzliche Abfrage für alle Produkte von katalog1, katalog2, usw. Das würde bedeuten, dass ich maximal die Anzahl der Kataloge + 1 Abfragen hätte.
Z.Z. benutze ich die dritte Variante, wäre aber sehr glücklich über Verbesserungsvorschläge !
Vielen Danke, Roogla
ich habe folgendes Problem: In einer Tabelle stehen Shop-Daten (produkt_ID, katalog_ID, anzahl, user_ID, datum). Nun will ich zur Ausgabe natürlich nicht nur die Produkt_ID ausgeben, sondern auch alle anderen Daten zu diesem Produkt (Preis, Produktname, Produktbeschreibung etc.). Diese stehen in vielen verschiedenen Katalog-Tabellen. Das wäre an sich ja alles noch kein Problem, nur dass ich zum Zeitpunkt der Abfrage nicht weiss, aus welcher Tabelle ich diese zusätzlichen Daten ziehen muss. Die Information steckt nämlich in der katalog_ID.
Ich habe bisher 3 Ansätze, die mich aber alle nicht wirklich zufrieden stellen:
1.: Eine Abfrage für die Shop-Daten, eine weitere pro Datensatz. Das würde bedeuten, dass ich bei 100 Produkten, 101 Abfragen hätte.
2.: Eine Abfrage für die Shop-Daten, verknüpft mit allen anderen Katalog-Tabellen, abhängig von der katalog_ID. Das sähe dann z.B. so aus:
SELECT
produkt_ID, katalog_ID, produktbeschreibung, preis
FROM
shoptabelle
LEFT JOIN katalog1 ON katalog1.produkt_ID = shoptabelle.produkt_ID AND katalog_ID = 1
LEFT JOIN katalog2 ON katalog2.produkt_ID = shoptablelle.produkt_ID AND katalog_ID = 2
LEFT JOIN ...
Das sieht an sich schon ganz gut aus, da ich ja nur eine Abfrage hätte. Das Problem ist aber, dass es nicht nur ein oder zwei weitere Kataloge gibt, sondern um die 100. Es würde also eine riesen Abfrage entsehen.
3.: Ich mache eine Abfrage für die Shop-Daten sortiert nach katalog_ID und mache dann immer eine zusätzliche Abfrage für alle Produkte von katalog1, katalog2, usw. Das würde bedeuten, dass ich maximal die Anzahl der Kataloge + 1 Abfragen hätte.
Z.Z. benutze ich die dritte Variante, wäre aber sehr glücklich über Verbesserungsvorschläge !
Vielen Danke, Roogla
Kommentar