0

MySQL クエリに問題があります。

table1、table2、table3 の 3 つのテーブルがあります。

私がやりたいのは、日付が 2013 年 6 月で、タイプが「N」で、table3 のステータスが「確認」でなかった table1 からコードの個別のカウントを取得することです。

コードにリンクされた多くのステータスが存在する可能性があるため、現時点では「確認」のステータスを含む結果を取得しています。したがって、結果セットに「確認」が含まれていないことを確認したいと思います。長くなりましたが、徹底したいと思います。

これが私のクエリです:

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

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 に答える