Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择与连接表中的许多其他ID有关系的记录 我使用的是SQLite 3数据库 我有两个具有多对多关系的表。因此,我还有一个连接表来保持这种关系。下面是一个类似于我所拥有的东西的表示,带有虚构的数据等_Sql_Sqlite - Fatal编程技术网

选择与连接表中的许多其他ID有关系的记录 我使用的是SQLite 3数据库 我有两个具有多对多关系的表。因此,我还有一个连接表来保持这种关系。下面是一个类似于我所拥有的东西的表示,带有虚构的数据等

选择与连接表中的许多其他ID有关系的记录 我使用的是SQLite 3数据库 我有两个具有多对多关系的表。因此,我还有一个连接表来保持这种关系。下面是一个类似于我所拥有的东西的表示,带有虚构的数据等,sql,sqlite,Sql,Sqlite,教师表: +----+------------+ | ID | Name | +----+------------+ | 1 | TeacherOne | | 2 | TeacherTwo | +----+------------| 学生表: +----+------------+ | ID | Name | +----+------------+ | 1 | StudentOne | | 2 | StudentTwo | +----+------------+

教师表:

+----+------------+
| ID |    Name    |
+----+------------+
| 1  | TeacherOne |
| 2  | TeacherTwo |
+----+------------|
学生表:

+----+------------+
| ID |    Name    |
+----+------------+
| 1  | StudentOne |
| 2  | StudentTwo |
+----+------------+
师生(连接表):

我想要的是只选择
TeacherID
,它有一条记录将它与
StudentID
都链接为1,
StudentID
为2。在这种情况下,我只会得到
TeacherID
1

我已经尝试了以下SQL语句:

SELECT t_s.*
FROM Teacher_Student AS t_s
WHERE StudentID IN (1, 2)

这将返回所有
StudentID
为1或2的记录。我已经搜索了一个答案,但到目前为止找不到任何对我有帮助的东西,所以只好求助。

如果你想选择
TeacherID
,它在
Teacher\u Student
表中为每个学生都有记录;您可以使用以下查询:

SELECT ts.TeacherID
FROM (
  SELECT TeacherID, COUNT(StudentID) AS cnt
  FROM teacher_student
  GROUP BY TeacherID) ts
JOIN (
  SELECT COUNT(*) As sCnt 
  FROM student) s
ON ts.cnt = s.scnt


您可以使用此查询选择两个特定的学生:

SELECT ts.TeacherID
FROM (
  SELECT TeacherID, COUNT(StudentID) AS cnt
  FROM teacher_student
  WHERE StudentID IN (1,2)
  GROUP BY TeacherID) ts
WHERE cnt = 2

这也将删除与学生有两个连接的教师。

您希望找到一个教师,该教师在每个学生的师生表中都有一个记录,或者只针对两个特定的学生?只针对学生的特定组合,在本例中为学生1和学生2。这就成功了。谢谢你,我已经为这个挣扎了一段时间了!
SELECT ts.TeacherID
FROM (
  SELECT TeacherID, COUNT(StudentID) AS cnt
  FROM teacher_student
  WHERE StudentID IN (1,2)
  GROUP BY TeacherID) ts
WHERE cnt = 2