MySQL ВЫБИРАЕТ запрос из нескольких таблиц

#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