MySQL - Tabellendaten kombinieren

Chef_De_Loup

Mitglied
Folgender Zustand:
Eine Tabelle in der ein Produkt steht. Jeder Eintrag besitzt eine ID welche in einer zweiten Tabelle Verknüpfungen zu Daten einer dritten Tabelle herstellt. Sprich ein Eintrag in der ersten Tabelle kann mehrere verschiedene Eintraege in der dritten Tabelle besitzen.
Ich versuche nun krampfhaft die Tabelleninformationen so zu kombinieren, dass ich je Produkt nur einen Eintrag inklusive der verschiedenen Anhänge erhalte. Leider scheitere ich dabei immer wieder auf verschiedensten Wegen und komme nicht auf das Ergebnis das ich gerne haette.

Beispiel einer meiner SQL Abfragen:

SELECT
t1.product_id, t3.value, t4.value

FROM
table1 AS t1

LEFT JOIN table2 AS t2 ON t2.product_id=t1.product_id
LEFT JOIN table3 AS t3 ON t3.id=t2.table3_id
LEFT JOIN table3 AS t4 ON t4.id=t2.table3_id

WHERE
t1.parent_id=1 AND t3.group_id=6 AND t4.group_id=9

ORDER BY
t1.product_id

Ich hoffe das Problem ist einigermassen verstaendlich. Die Eintrage in der dritten Tabelle sind einer Gruppe zugewiesen. Diese Gruppe ist mir bekannt und ich moechte gerne wissen, welchen Wert der jeweiligen Gruppe das Produkt hat.

Am Ende waere das Ergebnis also:
product_id, gruppeA_wert, gruppeB_wert
 
Ich bekomme anstatt eines Eintrages je Produkt leider zwei (bei zwei Gruppen). Gruppe A gibt einen Wert zurueck aber Gruppe B kombiniert diesen Wert mit seinen eigenen zwei Rueckgabewerten wodurch also zwei separate Eintraege erzeugt werden.
Ich bin allmaehlich der Ueberzeugung das ich die Abfrage abtrenne und das Ganze in zwei getrennten SQL Abfragen aufteile. Ich hatte gehofft das es in einer geht und man dadurch etwas Aufwand spart, aber womoeglich ist der Aufwand fuer die Datenbank bei der Kombinationsmoeglichkeit sogar hoeher als bei getrennten Abfragen.
 
Wenn du 1:n Beziehungen auf eine Zeile reduzieren willst, musst du überlegen wie du das machen Willst. Vei den mehreren Zeilen, was soll er da anzeigen?
 
Ergebnis was derzeit rauskommt sieht etwa so aus:
product_id, gruppeA_wert1, gruppeB_wert1
product_id, gruppeA_wert1, gruppeB_wert2

Wenn Gruppe B mehr als zwei Werte haette, wuerde eine entsprechende Anzahl an Ergebnissen folgen.

Ich hab das Problem jetzt grundsaetzlich in Etappen aufgetrennt und muss daher mehrmals eine Datenbankabfrage rausschicken. Aber so scheint es etwas uebersichtlicher zu sein und ich kann meinen Kopf erstmal wieder von der Tischplatte nehmen. ;)
 
Zurück