这个SQL查询让我难以理解如何做到这一点。
我有以下2个mysql表:
[items]
id
title
[ledger]
id
itemid
qty
stockcode
我正在从[items]表中执行select = 123的选择。我还想在结果集中返回一个'extras'列,该列匹配items.id = ledger.itemid并且是逗号分隔的列表具有SUM(数量)>的[分类帐]股票代码0。总和反映了一个项目可能有分类帐条目显示+5和-2图像的数量=总共3个图像。 3张图像将在附加列中反映为“图像,图像,图像”。
select
id
,title
,???? as extras
from
items
where
items.id = 123
'extras'列的示例结果可能是:
bold,highlight,border,image,image,image
反映了分类帐表的结果,其中sum(qty)> 0
bold (1)
highlight (1)
border (1)
image (3)
答案 0 :(得分:0)
您可能想要LEFT JOIN
和GROUP_CONCAT
以及HAVING
来获取您要查找的信息:
SELECT i.id, i.title, GROUP_CONCAT( l.stockcode SEPARATOR ',' ) extras
FROM items i
LEFT JOIN ledger l ON i.id = l.itemid
WHERE i.id = 123
HAVING SUM(l.qty) > 0
请参阅此SQL Fiddle
答案 1 :(得分:0)
尝试类似
的内容SELECT id, title, extras
FROM items
JOIN (
SELECT itemsid, GROUP_CONCAT(stockcode SEPERATOR ',') extras
FROM ledger
GROUP BY itemsid
HAVING SUM(qty) > 0
) t ON t.itemsid = items.id
WHERE id=123