Grup_koncat ile tabloları birleştirmekle ilgili bir sorunum var. Detaylar burada.tablonun birden fazla group_concat ile birleştirilmesi
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: Artık
quantity seq_no
1 234
1 234
1 235
ne elde etmek istiyorsunuz şu şekildedir:
, Bakışlaritem_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
Dikkat edilirse cheeseburger 2 iptal madde ve 2 talimat vardır, ama çıkış 4'tür: 0
Bu benim şimdiki sorgu geçerli: Burada
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
ve çıkışı çarpıyor gibi.
sen http://sqlfiddle.com/ yapıyı yerleştirebilir miyim? – jcho360
Sanırım bir şeyi yanlış yazmış olabilirsiniz çünkü aynı çıktıyı aynı girdi/sorgu ile alamıyorum (özellikle iki ord_id = 100 var); –
Bu, büyük olasılıkla MySQL'in “GROUP BY” kurallarının, çıktıda gerçekten göründüğünüzden daha fazla satır grubu üzerinden hareket etmesinden kaynaklanmaktadır. "GROUP BY order_id" var, ancak "SELECT" inizde başka cols var. Verileri @ExplosionPills tarafından önerilen şekilde düzeltin ve sonra sorguyu çözmeye yardımcı olabiliriz. –