我有關於與group_concat連接表的問題。這裏是細節。表連接多個group_concat
table_orders:
item_cd order_id descs quantity status seq_no
1 100 coca-cola 2 A 232
2 100 pizza 1 A 233
3 101 cheeseburger 5 A 234
4 102 pepsi 4 A 235
4
table_instructions:
item_cd instruction
3 more cheese
3 less vegetable
cancelled_item_table:
quantity seq_no
1 234
1 234
1 235
現在我要實現的是這樣的:
item_cd descs quantity instructions cancelled_item
1 coca-cola 2 - -
2 pizza 1 - -
3 cheeseburger 2 more cheese, less vegetable 1,1
4 pepsi 4 - 1
這是我當前的查詢:
SELECT
ord.item_cd,
ord.order_id,
ord.descs,
ord.quantity,
GROUP_CONCAT(x.quantity) as cancelled,
GROUP_CONCAT(i.instruction) as instruct
FROM table_orders ord
LEFT JOIN cancelled_item_table x ON ord.seq_no = x.seq_no
LEFT JOIN table_instructions i ON ord.item_cd = i.item_cd
WHERE ord.status = 'A'
GROUP BY ord.order_id
這裏是輸出:
item_cd descs quantity instructions cancelled_item
1 coca-cola 2 - 1
2 pizza 1 - 1
3 cheeseburger 2 more cheese, more cheese,
less vegetable, less vegetable 1,1,1,1
4 pepsi 4 - 1
如果你注意到,吉士漢堡有2個取消的項目和2個指令,但輸出爲4,外觀喜歡它的倍增。
您可以將結構http://sqlfiddle.com/? – jcho360
我認爲你可能錯誤的東西,因爲我沒有得到相同的輸入/相同的輸入/查詢(具體有兩個ord_id = 100); –
這可能是由於MySQL的寬鬆的GROUP BY規則作用於比實際在輸出中看到的更多的行組。你只有'GROUP BY order_id',但你的'SELECT'中有其他的cols。修復@ExplosionPills建議的數據,然後我們可以幫助解決查詢。 –