У меня есть сайт, который запрашивает профили преподавателей, когда пользователь ищет объект. Так, например, если я ищу математику, я получаю всех учителей, которые учат математике, - но, к сожалению, я не вижу других предметов, которые они учат, потому что мое условие включает только математику. Я в настоящее время использую:Присоединение к двум SQL-запросам
SELECT *
FROM subjects
INNER JOIN teachers_subjects ON
subjects.subject_id = teachers_subjects.subject_id
INNER JOIN users_teachers ON teachers_subjects.users_user_id = users_teachers.user_id
INNER JOIN users ON users_teachers.user_id = users.user_id
WHERE subjects.subject_en_name ='math'
Это поможет мне учитель Джон, но это будет только сказать мне, что он учит математику, когда на самом деле он на самом деле учит науку и английский.
Эти два SQL-запроса работают. Первая:
SELECT users.user_id
FROM subjects
INNER JOIN teachers_subjects ON
subjects.subject_id = teachers_subjects.subject_id
INNER JOIN users_teachers ON teachers_subjects.users_user_id = users_teachers.user_id
INNER JOIN users ON users_teachers.user_id = users.user_id
WHERE subjects.subject_en_name ='math'
Это вернет мне user_id, что я могу после этого заткнуть в это:
SELECT *
FROM subjects
INNER JOIN teachers_subjects ON
subjects.subject_id = teachers_subjects.subject_id
INNER JOIN users_teachers ON teachers_subjects.users_user_id = users_teachers.user_id
INNER JOIN users ON users_teachers.user_id = users.user_id
WHERE users.user_id = 100
Который дает мне всю информацию, которую мне нужно об Иоанне, в том числе тот факт, что он учит математика, наука и английский, хотя мой первый запрос задал только вопрос о математике. Я хотел бы знать, как я могу объединить эти два запроса, поэтому мне не нужно дважды запрашивать базу данных при каждом поиске.
UDPATE
Благодаря @DRapp, я думаю, что это может работать:
SELECT
*
from
(SELECT distinct
ts.users_user_id
from
subjects s
JOIN teachers_subjects ts
ON s.subject_ID = ts.subject_id
where
s.subject_en_name = 'math') qualified
JOIN users u
ON qualified.users_user_id = u.user_id
JOIN users_teachers ut
ON qualified.users_user_id = ut.user_id
JOIN teachers_subjects ts2
ON qualified.users_user_id = ts2.users_user_id
JOIN subjects s2
ON ts2.subject_id = s2.subject_id
Просто присоединитесь к таблице дважды. – Strawberry
@ Струберри извините, какие две таблицы вы рекомендуете присоединяться? – compguy24
teachers_subjects – Strawberry