簡體   English   中英

mysql查詢左join還是group_concat還是?

[英]mysql query left join or group_concat or?

這個SQL查詢讓我很困惑如何做。

我有以下2個mysql表:

    [items]
      id
      title

    [ledger]
      id
      itemid
      qty
      stockcode

我正在從[items]表中進行選擇,其中id =123。我還想在結果集中返回一個與items.id = ledger.itemid匹配的'extras'列,並且是一個以逗號分隔的[ledger]列表]的SUM(qty)> 0的股票代碼。 該總和反映出一個項目可能具有分類賬條目,顯示的數量為+5張圖像和-2張圖像=總共3張圖像。 這3張圖片將在“附加項目”列中反映為“圖片,圖片,圖片”。

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

“ extras”列的示例結果可能是:

    bold,highlight,border,image,image,image

它反映了總帳(qty)> 0的分類帳表中的結果

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

您可能想做一個LEFT JOINGROUP_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小提琴

嘗試類似

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM