台灣最大程式設計社群網站
線上人數
2999
 
會員總數:243667
討論主題:188258
歡迎您免費加入會員
討論區列表 >> ACCESS >> 人員群組的選擇
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
人員群組的選擇
價值 : 100 QP  點閱數:318 回應數:4

樓主

毛頭
初學者
18 54
957 87
發送站內信





大大們好,我有三個Table分別是個資、群組資料、人與群組的連結
一個人可能會參加數個群組
我想要取出不在企劃群組的人SQL該怎麼下才好呢?
結果應該要是只有「DD」,因為AA、BB、CC都有加入企劃群組
請大大們協助了,謝謝



資料表Name
ID Name
1 AA
2 BB
3 CC
4 DD

資料表Group
GID GName
1 企劃
2 行銷
3 專案

資料表GroupData
GDID ID GID
1 1 1
2 1 3
3 2 1
4 2 2
5 2 3
6 3 1
7 4 2




搜尋相關Tags的文章: [ ACCESS ] , [ SQL ] ,
本篇文章發表於2018-03-05 22:30
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
列出有在企劃群組的人的ID,
使用 Not In 排除掉
本篇文章回覆於2018-03-06 12:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

毛頭
檢舉此回應
感謝回覆,但是這樣資料量一多的時候要列出的ID量就很可怕耶
本篇文章回覆於2018-03-06 13:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

P陳
檢舉此回應
執行【查詢1】就是答案了


查詢2
SELECT TName.Name, TGroup.Gname, TGroup.Gid
FROM (Gdata INNER JOIN TGroup ON Gdata.gid = TGroup.Gid) INNER JOIN TName ON Gdata.id = TName.ID
WHERE (((TGroup.Gid)='G1'));

查詢1
SELECT TName.ID, TName.Name, 查詢2.Name
FROM TName LEFT JOIN 查詢2 ON TName.Name = 查詢2.Name
WHERE (((查詢2.Name) Is Null));


本篇文章回覆於2018-03-06 23:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
以下方法也可以 (用子查詢的方法)
SELECT TName.ID, TName.Name, (SELECT Count(Gdata.gid) AS gid之筆數
FROM Gdata
GROUP BY Gdata.id, Gdata.gid
HAVING (((Gdata.id)=[tname].[id]) AND ((Gdata.gid)="G1"));) AS 未加入
FROM TName;

本篇文章回覆於2018-03-07 16:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

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