[SQL ] 關於資料的選取
各位版大好,小弟是剛接觸SQL不久的新手
使用的DBMS是ACCESS
目前碰到一個問題
有兩個資料表長下面這樣
TABLE 1 TABLE2
ID1 c1 c2 c3 ID1 ID2
============================= ==============
1 1-c1 1-c2 1-c3 1 A
2 2-c1 2-c2 2-c3 1 B
3 3-c1 3-c2 3-c3 1 C
4 4-c1 4-c2 4-c3 3 A
5 5-c1 5-c2 5-c3 3 C
4 B
5 A
5 B
我使用這樣的指令
SELECT * FROM t1 LEFT OUTER JOIN t2 ON t1.ID1 = t2.ID1
JOIN出來的資料表長這樣(先當作TABLE3)
TABLE 3
ID1 c1 c2 c3 ID2
====================================
1 1-c1 1-c2 1-c3 A
1 1-c1 1-c2 1-c3 B
1 1-c1 1-c2 1-c3 C
2 2-c1 2-c2 2-c3 null
3 3-c1 3-c2 3-c3 A
3 3-c1 3-c2 3-c3 C
4 4-c1 4-c2 4-c3 B
5 5-c1 5-c2 5-c3 A
5 5-c1 5-c2 5-c3 B
我想要取得黃色的那幾列資料
也就是以ID1當分組,ID2不包含C但是有含NULL的那幾列
我把原本的指令加上 WHERE ID2 <> 'C' OR ID2 IS NULL
得到的結果是這樣
ID1 c1 c2 c3 ID2
====================================
1 1-c1 1-c2 1-c3 A
1 1-c1 1-c2 1-c3 B
2 2-c1 2-c2 2-c3 null
3 3-c1 3-c2 3-c3 A
4 4-c1 4-c2 4-c3 B
5 5-c1 5-c2 5-c3 A
5 5-c1 5-c2 5-c3 B
後來另外建了一個跟TABLE3一樣的資料
試著用 GROUP BY 加上 HAVING 的用法
SELECT ID1, c1, c2, c3 FROM table3
GROUP BY ID1, c1, c2, c3
HAVING COUNT(ID2 <> 'C') > 0
得到的結果是這樣
ID1 c1 c2 c3
=============================
1 1-c1 1-c2 1-c3
3 3-c1 3-c2 3-c3
4 4-c1 4-c2 4-c3
5 5-c1 5-c2 5-c3
想要的結果應該是這樣
ID1 c1 c2 c3
=============================
2 2-c1 2-c2 2-c3
4 4-c1 4-c2 4-c3
5 5-c1 5-c2 5-c3
稍微修改了一下SQL指令
SELECT ID1, c1, c2, c3, COUNT(ID2 <> 'C') FROM table3
GROUP BY ID1, c1, c2, c3
ID1 c1 c2 c3 COUNT(ID2<>'C')
===============================================
1 1-c1 1-c2 1-c3 3
2 2-c1 2-c2 2-c3 0
3 3-c1 3-c2 3-c3 2
4 4-c1 4-c2 4-c3 1
5 5-c1 5-c2 5-c3 2
查了一下發現COUNT()裡面只能寫欄名,不能寫判斷式的樣子
請問各位版大SQL要怎麼下,才能得到我想要的結果
有勞各位版大了 <(_ _)>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.172.135
→
09/16 22:59, , 1F
09/16 22:59, 1F
推
09/18 00:33, , 2F
09/18 00:33, 2F
→
09/18 00:38, , 3F
09/18 00:38, 3F
→
09/18 16:22, , 4F
09/18 16:22, 4F