2010-09-23 81 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