0
我想根據他們的「總部」或「父」位置將許多客戶組合在一起。使用CASE語句幫助MySQL查詢
這個工作正常,除了我在開發我的系統時並未預見到的缺陷......對於沒有「Parent」(獨立業務)的客戶,我默認parent_id爲0.因此,我的數據是這樣的:
id parent_id customer
1 0 CustName#1
2 4 CustName#2 - Melbourne
3 4 CustName#2 - Sydney
4 0 CustName#2 (Head Office)
我想要做的是組我的結果放在一起,這樣就沒有父母的記錄,我對的CustName#1一行,爲的CustName#2一行但我的問題是對於parent_id = 0,並且在使用內部聯接時排除這些行。
我已經使用CASE語句,嘗試,但不工作或者(父母仍然被忽略)
任何幫助將不勝感激。 這裏是我的查詢(我的情況基本上是試圖從基於的PARENT_ID customer表中BUSINESS_NAME除了當PARENT_ID = 0,那麼就使用在job_summary表中列出的CUSTOMER_NAME):
SELECT
js.month_of_year,
(CASE js.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END) as customer,
SUM(js.jobs),
SUM(js.total_cost),
sum(js.total_sell)
FROM JOB_SUMMARY js INNER JOIN
customer c on js.parent_id=c.id
group by
js.month_of_year,
(CASE c.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END)
ORDER BY `customer` ASC
謝謝...我認爲這有效...我現在在c.customer_id列中得到空值,所以我猜它必須是行不能匹配的行...下一個概率,我該怎麼做空? – sjw 2010-04-14 07:05:56
我認爲'(CASE c.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END)'應該是'(CASE js.parent_id WHEN 0 THEN js.customer_name ELSE c.business_name END)'在你的group by子句中。 – davek 2010-04-14 07:08:56
你在哪裏得到c.customer_id:我在你的查詢中看不到它。 – davek 2010-04-14 07:09:25