台灣最大程式設計社群網站
線上人數
573
 
會員總數:244808
討論主題:188842
歡迎您免費加入會員
討論區列表 >> MS SQL >> 如果沒有某個條件資料,也可以顯示該條件數量為0
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如果沒有某個條件資料,也可以顯示該條件數量為0
價值 : 150 QP  點閱數:643 回應數:9

樓主

Jimmy
初學者
99 21
354 24
發送站內信

請問各位高手

假設我地區有台北市、新北市、高雄市、桃園市四種

資料庫裡面有五筆資料
台北市有3筆,高雄市有2筆

請問如何才能下語法
結果是 台北市有3筆,新北市有0筆,高雄市有2筆,桃園市有0筆

P.S.
1、我目前是先不下地區,算出一個總數
再用這個分別去LEFT JOIN 各地區
但缺點是台灣地區很多,這樣寫法語法會超級長
2、我是SQL 報表使用
我可以把筆數都撈出來,再給報表去COUNT
但問題是沒有筆數的,在報表就不會出現(比如在報表新北市、桃園市都不會出現)





搜尋相關Tags的文章: [ 如果沒有某個條件資料,也可以顯示該條件數量為0 ] ,
本篇文章發表於2019-03-27 17:56
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

彩虹
檢舉此回應
你好,請提供以下資訊

1.資料表結構(包含資料表名稱、欄位名稱)
2.提供這兩張表一些範例資料

這樣會比較好說明
本篇文章回覆於2019-03-27 21:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Jimmy
檢舉此回應
比如 table A 有欄位 cityid,cityname
共有四筆資料
01 台北市
02 新北市
03 高雄市
04 桃園市


table B 有欄位 memberID,cityid
共有五筆資料
jimmy 01
bill 01
mary 01
john 03
even 03


想要一段語法
可以得到
住台北市有3人
住新北市有0人
住高雄市有2人
住桃園市有0人
本篇文章回覆於2019-03-27 23:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

彩虹
檢舉此回應
第一步:
可以先對 tableB 做 COUNT(cityid)

你會得到
cityid cityCount
01 3
03 2

=========================
第二步:
將上面 sql ,跟 tableA 做 JOIN,如下

你會得到
cityid cityname finalTotal
01 台北市 3
02 新北市 0
03 高雄市 2
04 桃園市 0


剩下你就能自行運用了∼
本篇文章回覆於2019-03-28 00:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

Jimmy
檢舉此回應
太感謝了
原來這樣就可以運用
但我發現有一個狀況
調整一下問題

如 table A 有欄位 cityid,cityname
共有四筆資料
01 台北市
02 新北市
03 高雄市
04 桃園市


table B 有欄位 memberID,cityid
共有五筆資料
jimmy 01
bill 01
mary 01
john 03
even null


想要一段語法
可以得到
住台北市有3人
住新北市有0人
住高雄市有1人
住桃園市有0人
其他 1人 ==> table A 無法新增其他這個項目
本篇文章回覆於2019-03-28 09:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

彩虹
檢舉此回應
你應該避免 table B 的 cityid 出現 NULL 值

如果有 memberID 沒有地址,你可以給預設值,像是 "99"
然後需要新增一列資料

table A
cityid cityname
99 其他

table B
memberID cityid
even 99

這樣就能做對應了,很多方式可以做,就看你自己怎麼變通
本篇文章回覆於2019-03-28 10:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Jimmy
檢舉此回應
了解,非常感謝


table B 有欄位 memberID,cityid
共有五筆資料
jimmy 台北市
bill 台北市
mary 台北市
john 高雄市
even null


那請問我如果只有 Table B的資料,沒有Table A可以比對
那有辦法得到下方的結果嗎

想要一段語法
可以得到
住台北市有3人
住新北市有0人
住高雄市有1人
住桃園市有0人

本篇文章回覆於2019-03-28 10:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Jimmy
檢舉此回應
了解,非常感謝


table B 有欄位 memberID,cityid
共有五筆資料
jimmy 台北市
bill 台北市
mary 台北市
john 高雄市
even null


那請問我如果只有 Table B的資料,沒有Table A可以比對
那有辦法得到下方的結果嗎

想要一段語法
可以得到
住台北市有3人
住新北市有0人
住高雄市有1人
住桃園市有0人

本篇文章回覆於2019-03-28 10:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

彩虹
檢舉此回應
一定要有呀!
請你思考一下,如果沒有 table A ,那要如何知道「全部」有哪些縣市呢....?

不知道你還會有什麼奇怪的問題
不然此次問題,照理說需要做結案囉
本篇文章回覆於2019-03-28 13:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

風箏
檢舉此回應
提供參考








本篇文章回覆於2019-03-29 10:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.