0

这个 SQL 查询让我不知道该怎么做。

我有以下 2 个 mysql 表:

    [items]
      id
      title

    [ledger]
      id
      itemid
      qty
      stockcode

我正在从 id = 123 的 [items] 表中执行选择。我还想在结果集中返回一个与 items.id = ledger.itemid 匹配的“附加”列,并且是 [ledger 的逗号分隔列表] 具有 SUM(qty) > 0 的股票代码。总和反映了一个项目可能有显示数量为 +5 和 -2 图像的分类帐条目 = 总共 3 个图像。这 3 个图像将在附加列中反映为“图像、图像、图像”。

    select
        id
        ,title
        ,???? as extras
    from
        items
    where
        items.id = 123

“附加”列的示例结果可能是:

    bold,highlight,border,image,image,image

这反映了总和(数量)> 0 的分类帐表的结果

    bold (1)
    highlight (1)
    border (1)
    image (3)
4

2 回答 2

0

try something like

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
于 2013-04-04T21:38:31.813 回答
0

您可能想要执行 aLEFT JOIN和 aGROUP_CONCATHAVING获取您正在寻找的信息:

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

于 2013-04-04T21:33:37.400 回答