2016-04-21 8 views
0

Ich habe jetzt stundenlang auf diese geklebt worden ist, jede Hilfe sehr geschätzt würdeSQL GROUP_CONCAT mit LEFT JOIN um mehrere relativ Reihen

Ich habe zwei Tabellen ‚Produkte‘ und ‚product_subcategorys‘

‚Produkte‘ nur eindeutige IDs hält, wo als ‚product_subcategorys‘ mehrere ids in Bezug auf die ‚Produkte‘ Tabelle

'products' 
id brand 
1 a 
2 b 
3 a 

'product_subcategorys' 
id subcat 
1 u 
1 i 
2 u 
3 u 

dies ist die Abfrage ich habe, Gruppe von ‚p.id‘ nicht angezeigt arbeiten

hält
SELECT GROUP_CONCAT(p.brand) 
FROM products p 
LEFT JOIN product_subcategorys s ON p.id = s.id 
WHERE (
     s.subcategory = "u" 
     OR s.subcategory = "i" 
     ) AS GROUPbrand 

Also mein Problem ist, ich will es die Liste der Marken aus dem ‚Produkt‘ Tabelle nur zurückkehren kann ich nicht verschiedene verwenden, weil ich die Multiples

zählen müssen möchte ich die Abfrage Marke ‚zurückzukehren a 'zweimal, aber diese Abfrage gibt es 3 mal zurück, da es zwei passende IDs in der' product_subcategorys 'gibt

+0

Bearbeiten Sie Ihre Frage und fügen Sie Ihre gewünschten Ergebnisse hinzu. Beachten Sie, dass die von Ihnen angegebene Abfrage nur eine Zeile zurückgibt. Daher habe ich keine Ahnung, was Sie unter "Diese Abfrage gibt 3 tiems" verstehen. –

+0

Sie müssen die Vielfachen zählen. Sollten das mehrere Zeilen sein, oder benötigen Sie eine numerische Zählung? –

+0

Ich brauche die Zeilen zurück zum Beispiel 'a, b, a' im Moment bekomme ich 'a, a, b, a' – lugreen

Antwort

1

Macht dies, was Sie wollen?

SELECT GROUP_CONCAT(p.brand ORDER BY p.id) 
FROM products p 
WHERE EXISTS (SELECT 1 
       FROM product_subcategorys s 
       WHERE p.id = s.id AND 
        s.subcategory IN ('u', 'i') 
      ); 
+0

Vielen Dank! Entschuldigung Es hat so lange gedauert, es zu testen. Es war Teil einer langen Frage, die ich überall durchgearbeitet habe. Es scheint aber den Trick zu machen! – lugreen