鍍金池/ 問答/數(shù)據(jù)庫/ [已解決]sql外鍵表關聯(lián)查詢的一個問題

[已解決]sql外鍵表關聯(lián)查詢的一個問題

業(yè)務背景

一個學校有很多老師
每個老師都教很多不同的班
現(xiàn)在要找出同時教1,2,3班的老師

環(huán)境

node.js+sequelize+mysql

表結構

  • 老師表:teacher(id,name)
  • 班級表:class(id,name)
  • 老師班級表:teacher_class(id,teacherId,classId)

問題

sql語句怎么查呢?
sequelize中怎么用呢?

嘗試

select teacherId from teacher_class where classId in [1,2,3]
//這個連只教1班的也會查出來
select teacherId from teacher_class where classId = 1 and classId =2 and classId =3
//這個顯然不可能

已解決

sql里面分組后再篩選,sequelize暫時沒弄
回答
編輯回答
無標題
#確保你的teacher_class表有unique index(teacherId, classId)
SELECT teacherId,COUNT(1) FROM teacher_class 
WHERE classId IN(1,2,3)
GROUP BY teacherId
HAVING COUNT(1)=3
2018年8月22日 04:51
編輯回答
純妹
SELECT a.teacherId
FROM   teacher_class a
       INNER JOIN teacher_class b ON b.teacherId = a.teacherId AND b.classId = 2
       INNER JOIN teacher_class c ON c.teacherId = a.teacherId AND c.classId = 3
WHERE  a.classId = 1
2017年10月14日 19:05
編輯回答
貓館
select tt.* from(
select a.id,count(1) as cnt from teacher a
    join teacher_class b on a.id=b.teacherId
where b.classId in(1,2,3)
group by a.id
) t join teacher tt on t.id=tt.id
2017年11月3日 12:21