MySQL: SQL Abfrage mit oder ohne Sub Query?

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Was willst du da gruppieren?
aus deinem ersten post hast du für ein Produkt 3 Varianten (Das mit FAA am Ende)
der join wird dafür immer 3 mal das Master auswerfen

oder du hast was in den Daten was wir nicht sehen.

ansonsten: beide „name“ felder im Select in ein MIN einklammern, und ganz am ende dann das group by nach beiden id‘s

ich geh mal von aus dass pro languga-id immer nur ein name vorhanden ist
 
Ungetestet
SQL:
SET @languageID='2fbb5fe2e29a4d70aa5854ce7ce3e20b';
SELECT master.id, MIN(master.name) AS masterBez, 
variant.id, MIN(variant.name) AS variantBez
FROM
(SELECT product.id, prodTrans.name, product.parent_id
FROM product
   LEFT JOIN product_translation AS prodTrans
ON product.id=prodTrans.Product_id 
AND prodTrans.language_id=UNHEX(@languageID)
) As master
INNER JOIN
(SELECT product.id, prodTrans.name, product.parent_id
FROM product
   LEFT JOIN product_translation AS prodTrans
ON product.ID=prodTrans.product_id 
AND prodTrans.language_id=UNHEX(@languageID)
) AS variant
ON variant.parent_id=master.id
GROUP BY master.id, variant.id;

Und ich habe dein WHERE in den Sub-Selects in ein AND verwandelt, damit es weiterhin ein LEFT JOIN bleibt
 
Ja, pro language FK ist immer nur eine Bezeichnung vorhanden!

Vielen Dank, Zvoni , für Deine Hilfe. Ohne Dich hätte ich dieses Query nicht zuwege gebracht. Werde diesen Thread heute Abend als gelöst markieren, damit Du diesen meinen letzten Post zur Sache noch zur Kenntnis nimmst. Anbei die Resultate des obigen Queries mit und ohne Gruppierung, damit Dir klar wird, warum ich eine Gruppierung benötige:
Mit Gruppierung kann ich klar erkennen, dass dieselben Variantenprodukte redundant einem Materprodukt zugeordnet sind
1716886273563.png

Ohne Gruppierung kann ich das nicht erkennen. Der Response zeigt nur einen einzigen Record auf:
1716886801710.png
 

Anhänge

  • 1716886260564.png
    1716886260564.png
    110,4 KB · Aufrufe: 1
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…
Zurück