這個SQL查詢讓我難以理解如何去做。mysql query left join or group_concat or?
我有以下2個MySQL表:
[items]
id
title
[ledger]
id
itemid
qty
stockcode
我從[項目]表進行選擇其中id = 123.I也想返回的一個「額外」列在items.id = ledger.itemid上匹配的結果集,它是SUM(qty)> 0的[分類帳]代碼的逗號分隔列表。這個總和反映了一個項目可能有分類賬項目顯示數量爲+5和-2圖像=總共3個圖像。這3幅圖像將在extras欄中反映爲「圖像,圖像,圖像」。
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)
我看了做這種方式,但擔心對整個分類帳表中的子查詢(可能是巨大的),可能會導致在性能問題上走下坡路? – regan 2013-04-04 21:43:52
有時你只需要做你必須做的事情。如果性能成爲一個問題,那麼你可能要考慮創建一個[物化視圖](http://en.wikipedia.org/wiki/Materialized_view)的GROUP_CONCAT查詢,並用它代替 – 2013-04-04 21:49:19
我已經發布了另一個關於使用用戶定義的變量在子查詢中 - 不知道沿着這些行的東西是否會提供另一個可能的解決方案(我以前沒有真正使用它們,所以不知道限制) - http://stackoverflow.com/questions/15823288/設置一個MySQL的用戶變量的每行 – regan 2013-04-04 23:14:57