Warzenjohnny
Neuer Benutzer
- Beiträge
- 2
Moin,
ich habe ein Problem bei einer MySQL Datenbankabfrage, die ich später in einem PHP Script verwenden möchte, das eine CSV Datei mit den Produktdaten aus einem Onlineshop generieren soll.
Die Standartwerte, wie z.B. Mengen oder Preise sind unproblematisch bei der Abfrage, da diese Daten aus der Tabelle "products" kommen.
Anders sieht es bei den Produktnamen oder den Produktbeschreibungen aus, da diese in drei Sprachen vorliegen und in der Tabelle "products_description" als jeweils eigener Datensatz mit einer von drei "language_id" und mit der zugehörigen "products_id" aus der Tabelle "products" gespeichert sind.
Die folgende Datenbankabfrage gibt die angeforderten Daten aus. Jedes Produkt drei mal als Datensatz, jeweils mit der "language_id" für die entsprechende Sprache (2 = deutsch, 1 = englisch, 5 = französisch).
Das Ergebnis sieht dann so aus:
Leider brauche ich das Ergebnis aber so, dass jedes Produkt nur einmal, also in nur einer Zeile bzw. in einem Datensatz ausgegeben wird, der dann aber alle drei Sprachen der Daten products_name, products_description, products_short_description und products_keywords aus der Tabelle products_description beinhalten soll. Diese sollen natürlich eine eigene Spalte und Überschrift je Sprache bekommen (siehe Beispiel).
Vor 20 Jahren hab ich mal einen 4 Wochen MySQL Kurs mitgemacht, aber davon bis heute nicht mehr viel übrig geblieben, daher würde ich mich über ein paar Denkanstöße freuen.
Vielen Dank
ich habe ein Problem bei einer MySQL Datenbankabfrage, die ich später in einem PHP Script verwenden möchte, das eine CSV Datei mit den Produktdaten aus einem Onlineshop generieren soll.
Die Standartwerte, wie z.B. Mengen oder Preise sind unproblematisch bei der Abfrage, da diese Daten aus der Tabelle "products" kommen.
Anders sieht es bei den Produktnamen oder den Produktbeschreibungen aus, da diese in drei Sprachen vorliegen und in der Tabelle "products_description" als jeweils eigener Datensatz mit einer von drei "language_id" und mit der zugehörigen "products_id" aus der Tabelle "products" gespeichert sind.
Die folgende Datenbankabfrage gibt die angeforderten Daten aus. Jedes Produkt drei mal als Datensatz, jeweils mit der "language_id" für die entsprechende Sprache (2 = deutsch, 1 = englisch, 5 = französisch).
SQL:
SELECT
p.products_ean, p.products_quantity, p.products_price, p.products_msrp, p.products_date_added, p.products_last_modified, p.products_status, p.manufacturers_id,
pd.products_id, pd.language_id, pd.products_name, pd.products_description, pd.products_short_description, pd.products_keywords
FROM products p
LEFT JOIN products_description pd ON p.products_id = pd.products_id
ORDER BY pd.products_name ASC
Das Ergebnis sieht dann so aus:
Leider brauche ich das Ergebnis aber so, dass jedes Produkt nur einmal, also in nur einer Zeile bzw. in einem Datensatz ausgegeben wird, der dann aber alle drei Sprachen der Daten products_name, products_description, products_short_description und products_keywords aus der Tabelle products_description beinhalten soll. Diese sollen natürlich eine eigene Spalte und Überschrift je Sprache bekommen (siehe Beispiel).
Vor 20 Jahren hab ich mal einen 4 Wochen MySQL Kurs mitgemacht, aber davon bis heute nicht mehr viel übrig geblieben, daher würde ich mich über ein paar Denkanstöße freuen.
Vielen Dank