Hallo Leute,
Yaslaw, ein SQL Experte par excellence, hatte mir vor einiger Zeit folgendes Query erstellt bzw. erweitert. Das ist für meine SQL Kenntnisse viel zu komplex, als dass ich dadurch irgendetwas verändern könnte. Bedauerlicherweise muss jetzt aber sowohl eine zusätzliche Tabelle gejoint werden, als auch eine WHERE Klausel eingefügt werden. Der zusätzliche JOIN baut sich wie folgt auf(er ist teilweise so schon implementiert; ich poste der Vollständigkeit halber aber den kompletten Bezug:
Letztlich interessieren die zusätzlichen Angaben aus der Tabelle property_group_translation. Da stehen nämlich die Attribute, wohingegen in property_group_option_translation die Attributwerte stehen. Siehe dazu folgendes komplexe Query, zu welchem dann noch eine WHERE Klausel hinzugefügt werden müsste, und zwar in der Form:
oder
Jetzt aber das hochkomplexe Query, welches gemäß obiger Anforderungen erweitert werden sollte. Über jede Hilfe bedanke ich mich vorab!
Yaslaw, ein SQL Experte par excellence, hatte mir vor einiger Zeit folgendes Query erstellt bzw. erweitert. Das ist für meine SQL Kenntnisse viel zu komplex, als dass ich dadurch irgendetwas verändern könnte. Bedauerlicherweise muss jetzt aber sowohl eine zusätzliche Tabelle gejoint werden, als auch eine WHERE Klausel eingefügt werden. Der zusätzliche JOIN baut sich wie folgt auf(er ist teilweise so schon implementiert; ich poste der Vollständigkeit halber aber den kompletten Bezug:
SQL:
SELECT * FROM product
LEFT JOIN product_property ON product.id = product_property.product_id
LEFT JOIN property_group_option ON property_group_option.id = product_property.property_group_option_id
LEFT JOIN property_group ON property_group.id=property_group_option.property_group_id
LEFt JOIN property_group_translation ON property_group_translation.property_group_id=property_group.id
SQL:
WHERE product_translation.name LIKE '%ABC%'
SQL:
WHERE renameTransTable.pt_name LIKE '%ABC%'
Jetzt aber das hochkomplexe Query, welches gemäß obiger Anforderungen erweitert werden sollte. Über jede Hilfe bedanke ich mich vorab!
SQL:
SET @languageID='2fbb5fe2e29a4d70aa5854ce7ce3e20b';
-- Atribut Bezeichnungen
WITH attributes AS (
SELECT product_property.product_id, property_group_option_translation.name AS AttributBez
FROM product_property
LEFT JOIN property_group_option_translation ON property_group_option_translation.property_group_option_id = product_property.property_group_option_id
),
-- Spalte name in der Tabelle product_translation umbenennen
renameTransTable AS (
SELECT product_translation.name AS pt_name, product_translation.product_id
FROM product_translation
WHERE product_translation.language_id = UNHEX(@languageID)
),
-- Daten. Master & Variants
-- Produkt um Attribut und Translation Tabelle ergänzen
p_data as (
SELECT product.id, product.product_number, renameTransTable.pt_name AS p_name, product.parent_id, attributes.AttributBez
FROM product
LEFT JOIN renameTransTable ON product.id = renameTransTable.product_id
LEFT JOIN attributes ON product.id = attributes.product_id
)
-- Master und Variant (beides die gleiche Quelle) kombinieren
SELECT master.id AS master_id, master.product_number AS master_product_number, MIN(master.p_name) AS masterBez,
variant.id AS variant_id, variant.product_number AS variant_product_number, MIN(variant.p_name) AS variantBez,
master.AttributBez AS masterAttrBez, variant.AttributBez as variantAttrBez
FROM p_data AS master
INNER JOIN p_data AS variant ON variant.parent_id = master.id
GROUP BY master.id, variant.id, master.product_number, variant.product_number, master.AttributBez, variant.AttributBez;
Zuletzt bearbeitet: