#mysql #sql
#mysql #sql
Вопрос:
Мне нужна помощь с запросом выбора MySQL из нескольких таблиц. У меня есть четыре таблицы: школа, дисциплина, ученики и команды.
Школьная таблица выглядит следующим образом:
------ --------- --------------- ----------
| id | name | discipline_id | pupil_id |
------ --------- --------------- ----------
| 1 | one | 2 | 5 |
------ --------- --------------- ----------
| 2 | two | 3 | 8 |
------ --------- --------------- ----------
| 3 | three | 4 | 12 |
------ --------- --------------- ----------
Таблица дисциплины выглядит следующим образом:
------ ---------
| id | name |
------ ---------
| 1 | math |
------ ---------
| 2 | bio |
------ ---------
| 3 | liter |
------ ---------
| 4 | geo |
------ ---------
Таблица команд выглядит следующим образом:
------ --------- --------------- -----------
| id | name | school_id | member_id |
------ --------- --------------- -----------
| 1 | T1 | 1 | 3 |
------ --------- --------------- -----------
| 2 | T2 | 3 | 3 |
------ --------- --------------- -----------
| 3 | T3 | 2 | 9 |
------ --------- --------------- -----------
Результат дисциплин, который мне нужно получить с помощью запроса «ВЫБРАТЬ из дисциплины …» с помощью «member_id = 3», является:
----------------- ---------------
| discipline_name | discipline_id |
----------------- ---------------
| bio | 2 |
----------------- ---------------
| geo | 4 |
----------------- ---------------
Путем сопоставления школы участника, а затем получения его дисциплины, если это имеет смысл…Возможно ли это сделать только с одним запросом MySQL?
Тип: member_id 3 => school_id 1,3 => discipline_id = показывать названия и идентификаторы связанных дисциплин, которые равны 2, 4
Большое вам спасибо…
Комментарии:
1. Взгляните на команды mysql join ?
2. значит, ваш
team-mamber_id
должен совпадатьschool->puple_id
?3. @Alex нет, он должен соответствовать school_id, а затем discipline_id в этих школах… Я надеюсь, что это имеет смысл…
4. @maxpelic Я попробовал несколько, но не могу разобраться в схеме правильно, извините, я всего лишь новичок … ;-(
Ответ №1:
Ваша цель не ясна или не имеет смысла для меня.
Но вот то, о чем вы буквально просите:
SELECT
s.discipline_id
d.name
FROM teams t
LEFT JOIN school s
ON s.id = t.school_id
LEFT JOIN discipline d
ON d.id = s.discipline_id
WHERE t.member_id = 3