0

すべての従業員がリストされている MySQL のテーブルがあります。特定の日に働かなければならないすべての従業員がリストされている別のものがあります。そして今、私は空いている(または少なくともワークテーブルにリストされていない)すべての従業員を選択したいと考えています。このフィドルでは、私のスキーマを見ることができます。

のようなコードSELECT * FROM pf_mitarbeiter WHERE NOT LISTED AS employeeID IN pf_tagesplan_zuteilungenはとても素晴らしいでしょう。しかし、私は他のバージョンも取っています。

君たちありがとう!

4

3 に答える 3

2

a を使用して、一致する行がないという条件でLEFT JOIN結合pf_tagesplan_zuteilungenします。employeeIDpf_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

a を使用しLEFT OUTER JOINて 2 つのテーブルを結合します。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条件は、一致する employeeId を持つ行pf_mitarbeiterがない行のみを返すように結合を制限します。pf_tagesplan_zuteilungen

于 2013-07-06T17:11:54.623 に答える