[英]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 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小提琴
嘗試類似
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.