
初心者です。いつもお世話になります。よろしくお願いします。
shiftテーブルは出勤したら、データが追加されていきます。
テーブル
shift
フィールド
No
shift_day
shift_time
code
memberテーブルは名簿です。
テーブル
member
フィールド
code
name
この二つのテーブルを使って、
SELECT member.name FROM member INNER JOIN shift ON member.code = shift.code WHERE shift.shift_day NOT BETWEEN '2008-10-01' AND '2008-10-31' and shift.shift_day BETWEEN '2008-12-01' AND '2008-12-15' GROUP BY member.code
2008年10月1日から10月31日までの期間中に働かなかった人で尚且つ2008年12月1日から12月15日の間に1回でも働いた人を抜き出すようにしたいのですが、方法がわかりません。
どうぞよろしくお願いします。
No.2ベストアンサー
- 回答日時:
#1で申し上げた通りでいけそうですね。
今回の例であれば具体的にはこんな感じ
SELECT member.code,member.name
FROM member
LEFT JOIN (
SELECT DISTINCT code
FROM shift
WHERE shift_day BETWEEN '2008-10-01' AND '2008-10-31'
) AS X10
ON X10.code=member.code
LEFT JOIN (
SELECT DISTINCT code
FROM shift
WHERE shift_day BETWEEN '2008-12-01' AND '2008-12-31'
) AS X12
ON X12.code=member.code
WHERE X10.code IS NULL AND X12.code IS NOT NULL;
No.1
- 回答日時:
ユーザーテーブルにDISTINCTした12月に働いたデータをLEFT JOINし
さらにDISTINCTした10月に働いたデータをLEFT JOINして、
10月分はNULLを検出すればいけそうです。
もうすこし具体的な例を記述いただければ、SQL文もかけるかもしれません
すくなくともMySQLのバージョンくらいかいたてください
この回答への補足
早速ご返事ありがとうございます。
言葉が足りず失礼しました。
MySQL クライアントのバージョン: 4.1.22
です。
具体的には、
テーブル[shift]
NO shift_day shift_time code
1 | 10-01 | 10:00 | 131
2 | 10-03 | 10:30 | 131
3 | 10-03 | 10:00 | 135
4 | 10-05 | 10:00 | 131
・
・
・
25 | 12-02 | 10:00 | 131
26 | 12-02 | 10:00 | 128
27 | 12-04 | 10:30 | 131
テーブル[member]
code name
128 yamada
131 watanabe
135 tanaka
138 satou
このようなテーブルがあったとします。
この中でテーブルshiftの中から10月には一度も仕事をしなかったけれど、12月には仕事をしている人を探せるようにしたいと思っています。
上にデータからでは、128のyamada がヒットするようにしたいと思います。
どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
Accessの構成をコピーしたい
-
既存データをINSERT文にして出...
-
ADO+ODBCでテーブルに接続する...
-
DB2のSQLコマンドについて
-
ExcelのVLOOKUP関数の動作をMyS...
-
ExcelのMatch関数のようなもの...
-
あってますか?SQL
-
SQLです!!教えてください。あ...
-
H2 DataBaseご存知の方教えて...
-
SQLサーバに対するSQL文で抽出...
-
結合したテーブルをSUMしたい
-
複数のテーブルからデータを取...
-
SELECT INTOで一度に複数の変数...
-
sqlに記述できない文字
-
フラグをたてるってどういうこ...
-
PostgreSQLのtimestamp型で時間...
-
ACCESS テキストボックスに入...
-
Excel VBAのユーザーフォームで...
-
timestampのデータはどのように...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【SQL】他テーブルに含まれる値...
-
SQLサーバに対するSQL文で抽出...
-
既存データをINSERT文にして出...
-
SQLで、Join句で結合したテ...
-
Accessの構成をコピーしたい
-
結合したテーブルをSUMしたい
-
副問合せを使わずにUNIONと同様...
-
テーブル名が可変の場合のクエ...
-
2つのテーブルをLIKE演算子のよ...
-
ExcelのMatch関数のようなもの...
-
改行を含んだデータのインポート
-
PRIMARY KEYのコピー
-
ADO+ODBCでテーブルに接続する...
-
ACCESSのVBAにてExcelに行...
-
同一テーブル内での比較(最新...
-
(SQL)日数の計算
-
ExcelのVLOOKUP関数の動作をMyS...
-
データ無し時は空白行にしたい...
-
必要なテーブルの個数について。
-
複数選択か?単数選択か? テ...
おすすめ情報