0

我在 MySQL 中有一张表,其中列出了所有员工。我还有另一个列出了所有必须在特定日期工作的员工。现在我想选择所有有空闲的员工(或者至少没有在工作表中列出)。在这个小提琴中,您可以看到我的架构。

像这样的代码SELECT * FROM pf_mitarbeiter WHERE NOT LISTED AS employeeID IN pf_tagesplan_zuteilungen会非常棒。但我也采用其他版本。

感谢你们!

4

3 回答 3

2

在没有匹配行的条件下使用 aLEFT JOIN加入:pf_tagesplan_zuteilungenemployeeIDpf_mitarbeiter

SELECT t1.*
    FROM pf_mitarbeiter t1
    LEFT JOIN pf_tagesplan_zuteilungen t2 ON t2.employeeID = t1.ID AND t2.date = CURDATE()
    WHERE t2.ID IS NULL
于 2013-07-06T17:05:38.400 回答
1
select *
from A
where not exists
(
   select 1
   from B
   where a.key = b.key
)
于 2013-07-06T17:04:45.823 回答
0

使用 aLEFT OUTER JOIN连接两个表。通过这样做,pf_mitarbeiter即使表中没有相关行,您也可以从表中选择所有行pf_tagesplan_zuteilungen

SELECT
  S.*
FROM
  pf_mitarbeiter S
  LEFT OUTER JOIN pf_tagesplan_zuteilungen T ON (S.ID = T.employeeID)
WHERE
  T.ID IS NULL
;

IS NULL条件将连接限制为仅返回pf_mitarbeiter没有pf_tagesplan_zuteilungen匹配employeeId 的行的行。

于 2013-07-06T17:11:54.623 回答