0

表格1

att_id name tel
a1       Joe  123456
a2       Tom  456789
a3       mary  444444
a4       sue   333333

表 2

group_id desc  att_id
5        red     a1
10       blue    a1
12       orange  a1
6        green   a2
5        red     a2
10       blue    a3
6        green   a3
5        red     a4
10       blue    a4
6        green   a4

我希望每个 att_id 有 1 行,其中组 id <> 12。但这就是问题所在。如果该与会者确实有一个 5(红色)的组记录,那么我想看看。

IE

att_id a1 不在列表中,因为它在第 12 组中有一个项目,这是正确的

结果:

a2  tom  456789  red
a3  mary 444444
a4  sue  333333  red

我的查询是这样的:

SELECT DISTINCT Name, Phone FROM table1 INNER JOIN table2 ON table1.Att_ID = table2.Att_ID WHERE (table1.Att_ID Not In (select Att_ID from table2 where table2.Group_ID = 12))

这可以排除表 1 中在表 2 中具有组 id 12 的记录。我不知道如何查看返回的记录以确定它们中是否有任何一个“红色”组,但仍然只有 1为该 att_id 返回的记录,只是用一个 col 表示他们在表 1 中有一条红色组记录

抱歉,不知道如何表达清楚。

4

1 回答 1

0

对“红色”列使用 aDLookup()似乎可行:

SELECT 
    att_id, 
    [name], 
    tel, 
    DLookup("[desc]", "table2", "att_id=""" & att_id & """ AND [desc]=""red""") AS red
FROM table1
WHERE att_id NOT IN (SELECT att_id FROM table2 WHERE group_id=12)
于 2013-05-22T08:44:54.570 回答