データベーステーブル「members
」があります。メンバーに割り当てられるのはposition
です。MySQL:除外
Positions
Departments
から来ています。私はDepartments
、次にSub-Departments
とそれらの部署内の位置を持っています。
うまくいけば私はあなたを失っていません。
私がしたいことは、部門内のすべてのメンバーを選択し、その部門内の1つの職位からそのメンバーを除外することです。 (部門やサブ部門を含んでいる)
ID NAME PARENT_ID
1 Department #1 NULL
2 Department #2 NULL
3 Sub Department #1 1
4 Sub Department #2 1
5 Sub Department #3 2
"departments_positions" 表:
ID NAME SUB_DEPARTMENT_ID
1 Position #1 3
2 Position #2 3
3 Position #3 4
"members_positions" 表:
ID MEMBER_ID POSITION_ID
1 1 1
2 1 2
3 1 3
ここに私の食卓が
"部署" MySQLコード:
SELECT m.* FROM members AS m
LEFT JOIN members_positions AS mp ON mp.member_id = m.id
LEFT JOIN departments_positions AS dp ON mp.position_id = dp.id
LEFT JOIN departments AS sd ON dp.sub_department_id = sd.id
LEFT JOIN departments AS d ON sd.parent_id = d.id
WHERE mp.position_id != '2' AND d.id = '1'
GROUP BY m.id
「Department#1」(departments_tableからID:1)にあるメンバーを抽出したいのですが、Position#2(departments_positionsテーブルのID:2)のメンバーは抽出しません。部門。
うまくいけば私は理にかなっています。上記の私のコードは動作していないようです。部門から全員をエクスポートするだけです。
私は無視していませんでした。メンバテーブル全体から選択したポイントに対してSELECT DISTINCTがあり、SELECT DISTINCTINGでした。上記のようにレベルを上げることをお勧めします。メンバーだけにアクセスするには、あなたが望む行がPKだけでアクセスできることがわかったら、アクセスしてください。あなたの追加でも、私たちの答えは同じではなく、私は負荷の下で最適であることを示唆していると私は確信しています。また、私は自分自身に学科に参加しないことを提案しました。 –
@ Simonatmso.net私は不必要な参加に異議を唱えていませんでした。いいえ、私はメンバーテーブル全体から選択していませんでした。すべての例でメンバーIDのみを選択していました。 – Timeout