2010-09-23 80 views
0

的參數是這樣的:SQL:需要幫助建立一個一對多的集中比對查詢

  1. 我有一個列ID(主鍵)和標籤(文本)的表稱爲任務。
  2. 我有另一個表稱爲位置與一個外鍵引用任務的ID和位置(文本)的名稱。
  3. 在我的代碼中,我有一組位置。
  4. 已更新:我需要一個查詢以返回在我的集合中找到的具有關聯位置的所有任務。必須拋出在我的集合中找不到關聯位置的每個任務。

這是怎麼回事?

+0

你是問如何從你的客戶端應用程序通過一組(也稱爲表)到你的SQL數據庫管理系統?這個問題有很多方法(多個標量參數,分隔字符串,XML等),主要依賴於所討論的SQL產品。你會發現很多這樣的問題:) – onedaywhen 2010-09-23 09:54:30

+0

不,我只是需要一些幫助查詢邏輯。 – Hamster 2010-09-23 17:00:32

回答

0

對於修改的要求:

select * from tasks t 
where exists (select null from locations l 
       where t.id = l.task_id and l.name in ('London', 'Geneva'...)) and 
    not exists (select null from locations l 
       where t.id = l.task_id and l.name not in ('London', 'Geneva'...)) 
+0

我認爲這可能有效。我也早些時候終於成功地想出了: SELECT * FROM Tasks where id not in(SELECT UNIQUE L.taskid FROM Locations L WHERE L.val NOT IN('London','Geneva',...));不過,我不確定我的觀點是否正確。 – Hamster 2010-09-23 15:57:25