2017-03-24 2 views
1

Ich versuche, zusammen, um eine Abfrage zu setzen, aber das Ergebnis ist nicht das, was ich erwarte,SQL-Abfrage mit vielen LEFT JOINS

select pii.id, pii.name, pii.sku, group_concat(pic.id) category_ids, group_concat(pimg.id) as modifier_group_ids 
from items as pii 
left join category_item as pici on pii.id = pici.item_id 
left join categories as pic on pici.category_id = pic.id 
left join item_modifier_group as piimg on pii.id = piimg.item_id 
left join modifier_groups as pimg on piimg.modifier_group_id = pimg.id 
where pii.account_id = 728 
group by pii.id; 

Das Ergebnis ist der, 4. Spalt (Category_ids) mit doppelten gruppiert werden Werte ..

id  |name      |sku |category_ids   |modifier_group_ids | 
-------|----------------------------|----|------------------------|-------------------| 
336937 |Chicken Pullets    | |12981     |     | 
336938 |Hats      | |12965     |     | 
336939 |Jack Fruit Taco Salad  | |12975,12975,12975  |57,58,60   | 
336940 |Vegatarian Taco Salad  | |12975,12975,12975  |58,60,57   | 
336941 |Pulled Pork Taco Salad  | |12975,12975,12975  |58,57,60   | 
336942 |Ground Beef Taco Salad  | |12975,12975,12975  |60,57,58   | 
336943 |Steak Taco Salad   | |12975,12975,12975  |57,58,60   | 
336944 |Chicken Taco Salad   | |12975,12975,12975  |60,58,57   | 
336945 |Jack Fruit Quesadilla  | |12976,12976,12976,12976 |58,60,57,56  | 
+0

Scheint, wie Sie irgendwo DISTINCT brauchen ... – jarlh

Antwort

1

Ihre Abfrage sieht gut aus und vor allem die dups zusammen mit JOIN kommen. Versuchen Sie, distinct in group_concat() wie unten zu verwenden.

group_concat(distinct pic.id) category_ids, 
+0

Dank half dies. –

0

Wenn Sie keine doppelten wollen Werte von group_concat() verkettet werden, dann verwenden Sie einfach die distinct Schlüsselwort in der Funktion:

select pii.id, pii.name, pii.sku, group_concat(DISTINCT pic.id) category_ids, group_concat(pimg.id) as modifier_group_ids 
from items as pii 
left join category_item as pici on pii.id = pici.item_id 
left join categories as pic on pici.category_id = pic.id 
left join item_modifier_group as piimg on pii.id = piimg.item_id 
left join modifier_groups as pimg on piimg.modifier_group_id = pimg.id 
where pii.account_id = 728 
group by pii.id; 
+0

danke, das hat das Problem behoben .. Ich habe die andere Antwort gewählt, weil sie vor deiner gepostet wurde. –