我有一个称为MM(物料运动)的主表和一个名为MI(物料)的孩子的表,我进行了查询以选择具有特定条件的所有MI记录,并且MI中的每个记录都连接到主列表表称为库存,以获取物料价格。现在,我需要获取用于购买的帐户代码中的每个项目。 所以我回到po(购买顺序)表,该表也有一个称为polines表的子表,此polines表的stockID也在MI表中。
MM
MMID , Sender, NewLocation,Status
MI
MIID, MMID, StockID, Qty1
stock
StockID, Description, UPrice
polines
PLID, POID, StockID, UPrice, AccountCode
SELECT *
FROM (mm
JOIN mi ON mi.MMID = mm.MMID)
JOIN stock ON mi.StockID = stock.StockID
WHERE mm.Status = 'Issue'
上面给了我这样的正确记录(选择了我不需要的所有列之后):
Sender New Location StockID Description UnitPrice
------ ----------- ------- ---------- ---------
James DC1 A1 Generator g4 450
但是我需要的是:
Sender New Location StockID Description UnitPrice account code
------ ----------- ---------- ---------- --------- ------------
James DC1 A1 Generator g4 450 B001,B003
基本上,帐户代码应组合或分组到stockID,但
这是polines表的样子:
StockID Description Account Code
---------- ------- ----------
A1 Generator g4 B001
A1 Generator g4 B003
A2 Pipe D3 B004
我不确定在MySQL中是否可行,我可以使用PHP来做到这一点,但是我真的想提高我的MySQL技能,所以任何帮助将不胜感激!
答案 0 :(得分:0)
使用group_concat
函数
SELECT Sender,NewLocation,stock.StockID,polines.Description,UPrice, group_concat(polines .AccountCode separator ',')
FROM mm
JOIN mi ON mi.MMID = mm.MMID
JOIN stock ON mi.StockID = stock.StockID
join polines on stock.StockID=polines.StockID
WHERE mm.Status = 'Issue'
group by Sender,NewLocation,UPrice,stock.StockID,polines.Description