MySQLで質問です。


企業のIDを管理したテーブルがあるとします(bテーブルとします)

それのログインログを取っており(cテーブルとします)、そのテーブル内で期間を指定し、その期間内に使用してないb内のIDを検出するSQLを作りたく思います。

どういう書き方をすればいいでしょう。

ちなみにc内の日付を扱う物をc_date、b内のIDはidとします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/02/16 17:44:39
  • 終了:2008/02/23 17:45:02

回答(2件)

id:KUROX No.1

KUROX回答回数3542ベストアンサー獲得回数1402008/02/16 17:48:54

ポイント35pt

SELECT * FROM bテーブル WHERE id not in(select id from cテーブル where c_date>=開始日時 and c_date<=終了日時)

http://q.hatena.ne.jp/answer

id:makocan

上記ですと、例えば2007年11月2日と2007年12月10日に使用したユーザーが居る場合

2007年11月10~2007年12月30日を指定された場合

2007年11月2日と2007年12月10日に使用したにも関わらず

上記IDは未使用で出てきてしまうのではないでしょうか?

2008/02/16 18:38:32
id:chuken_kenkou No.2

chuken_kenkou回答回数722ベストアンサー獲得回数542008/02/17 00:32:03

ポイント35pt

MySQLの質問をする場合は、バージョンの明記をお願いします。

MySQL 4.0以前、4.1、5.0以降で、大きな機能追加や仕様変更があります。

具体的には、MySQL 4.1でサブクエリやインラインビュー、MySQL 5.0でビューやストアド・プロシジャ

等が実装されており、「できる操作」が大幅に違ってきます。


b表のidに対応するc表の列は、c_idとしたSQL例です。

select *
 from b
 where
  not exists(select * from c
              where b.id=c.b_id
                and c_date between '2007-11-10' and '2007-12-30')
 order by b.id

http://q.hatena.ne.jp/だみー

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません