0

就業日をワーカー ID に割り当てるテーブルがあります。

Table: workdays       Table: jobs
+------+-------+      +------+-----------+
| id   | days  |      | id   | jobs      |
+------+-------+      +------+-----------+
|    1 |  mon  |      |    1 | cleaning  |
|    1 |  tue  |      |    2 | cooking   |
|    2 |  sat  |      |    3 | driving   |
|    3 |  mon  |      |    4 | cleaning  |
|    3 |  tue  |      |    5 | cooking   |
|    3 |  sat  |      +------+-----------+
|    4 |  wed  |
|    4 |  mon  |
|    5 |  tue  |
+------+-------+

これは、指定した曜日 (月曜日と火曜日など) に勤務する人の ID を選択するために使用するクエリです。

SELECT * FROM workdays WHERE days IN ( 'mon', 'tue' )

ここで、指定したすべての日に勤務する人を選択したいと思います。どうやってやるの?

編集: 2 番目の表を追加しました。

4

1 に答える 1

4

daysはすべてに対して一意であると仮定しますid

SELECT id
FROM workdays 
WHERE days IN ('mon', 'tue')
GROUP BY id
HAVING COUNT(*) = 2

それ以外の場合は、一意の値のみをカウントするDISTINCTin句が必要です。HAVING

HAVING COUNT(DISTINCT days) = 2
于 2013-11-01T17:14:43.367 に答える