人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLで質問です。

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

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

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

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

●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:MySQL SQL ログ ログイン 企業
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● KUROX
●35ポイント

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

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

◎質問者からの返答

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

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

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

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


2 ● chuken_kenkou
●35ポイント

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/だみー

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ