0

我在使用 MySQL 查询时遇到问题。

我有 3 个表:table1、table2 和 table3。

我想要做的是从表 1 中获取不同的代码计数,其中日期为 2013 年 6 月,它的类型为“N”,表 3 的状态从不“确认”。

目前我得到的结果包含“确认”状态,因为可能有许多状态与代码相关联。所以我想确保我的结果集永远不会包含“确认”。啰嗦,但我希望彻底。

这是我的查询:

select count(distinct(code)) 
  from table1 
 where date between '2013-06-01' and '2013-07-01' 
   and type = 'N' 
   and id in (select id 
                from table2 
               where id_response in (select id_response 
                                       from table3 
                                      where status NOT LIKE 'Confirmation'));

我知道我的查询写得并不理想,所以我欢迎所有建议来帮助我做得更好并获得我需要的结果。

谢谢您的帮助。

4

2 回答 2

1

我会做:

select table1.code, count(table1.code) 
from table1, table2, table3
where table1.date between '2013-06-01' and '2013-07-01'
and table1.type = 'N'
and table1.id = table2.id
and table2.id_response = table3.id_response
and table3.status <> 'Confirmation'
GROUP BY table1.code
于 2013-08-14T16:26:40.833 回答
0

希望这会奏效:

select
table1.code, 
count(table1.code) 
from table1 
INNER JOIN table2 on (table1.id = table2.id)
where table1.date between '2013-06-01' and '2013-07-01' and table1.type = 'N' 
AND table2.id_response NOT IN 
(Select  table3.id_response from table3 WHERE table3.status = 'Confirmation')
GROUP BY table1.code
于 2013-08-14T10:57:17.050 回答