2013-11-01 32 views
0

我有一个表为工作日分配工作日ID。简单的MySql SELECT

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') 

现在,我想选择那些在我指定的所有日子里工作的人。我怎样才能做到这一点?

编辑:增加第二个表。

+0

假设(ID,日)是唯一的... GROUP BY ID HAVING COUNT(*)在(项目=数) – Strawberry

+4

@ Zap7都能跟得上。它会返回**空**。 –

+2

谁提高了? – Strawberry

回答

4

假设days对于每个id都是唯一的。

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

否则,你需要有DISTINCTHAVING条款来算唯一的值。

HAVING COUNT(DISTINCT days) = 2 
+0

非常好,谢谢!还有一件事:比方说,我有另一张桌子给每个工作人员分配工作。我如何选择星期一和星期二提供的所有工作人员,并进行清洁?我尝试了“SELECT * FROM工作日NATURAL LEFT JOIN作业WHERE IN IN('MON''tue')AND IN IN('cleaning')”,但它不返回任何结果。 – eevaa

+0

你能展示模式和他们的关系吗? –

+0

我把它添加到我的文章中。 – eevaa