我得到了这张桌子:
Students (Name);
Exam (IDExam)
Exams_Prenotations(StudentName,Exam)
我希望所有参加考试的学生都与名为'Bob'的学生一样。 (如果bob参加考试'EXAM1'和'EXAM2',我希望所有将与他一起做'EXAM1'和'EXAM2'的学生。)
我 CANT 使用SUBQUERIES。
谢谢
答案 0 :(得分:0)
您需要以下内容:
SELECT *
FROM
STUDENTS s
INNER JOIN EXAMS_STUDENTS es ON es.student_id = s.id
INNER JOIN EXAMS e ON e.id = es.exam_id
WHERE
s.name = 'Bob'
如果那不是你想要的;那么,你需要重新表述你的问题。数据结构也会有所帮助。
答案 1 :(得分:0)
你还没有说出你能做什么,也没有详细说明你提到的三个表,所以我做了一些假设。
另外,为了构建快速演示,它是在 sqlite 而不是mysql,但查询应该或多或少相同。
数据结构:
sqlite> select * from students;
id name
---------- ----------
1 alice
2 bob
3 charles
4 dave
sqlite> select * from exam;
id name
---------- ----------
1 maths
2 art
3 physics
sqlite> select * from exams_prenotations;
student_id exam_id
---------- ----------
1 1
1 3
2 1
2 3
3 2
4 2
然后我们正在创建一个包含这些表的临时表来保存Bob考试的考试ID:
create temporary table bob_exams as
select x.id
from exam x
join exams_prenotations e on e.exam_id = x.id
join students s on s.id = e.student_id
where s.name = "bob";
sqlite> select * from bob_exams;
id
----------
1
3
...现在加入临时表到原件,我们可以让学生和鲍勃一起做同样的考试:
select s.name
from exam x
join exams_prenotations e on e.exam_id = x.id
join students s on s.id = e.student_id
join bob_exams b on b.id = x.id
group by s.name;
name
----------
alice
bob