mysql查询左连接或group_concat还是?

时间:2013-04-04 21:25:44

标签: mysql

这个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)

2 个答案:

答案 0 :(得分:0)

您可能想要LEFT JOINGROUP_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