我有一个名为MM(物料移动)的主表和一个名为MI (物料物料)的子表,我进行了一次查询,以选择具有特定条件的所有MI记录,并且MI中的每个记录都连接到一个名为stock的主列表表,以获得物料价格。现在,我需要获得这些项目中的每一个用于购买的帐户代码。所以我回到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技能,所以任何帮助都将不胜感激!
发布于 2018-08-12 16:08:43
使用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
https://stackoverflow.com/questions/51806860
复制相似问题