Выборка столбцов, 4 таблицы - PullRequest
0 голосов
/ 16 мая 2018

Я столкнулся с некоторыми проблемами со следующим назначением SQL.Я должен получить ID, имя и фамилию любого участника, который зарегистрирован в разделе, содержащем слово «xyz».

До сих пор мне удалось следующее:

SELECT m.id, p.firstname, p.lastname FROM member m
INNER JOIN person p ON m.id = p.id
WHERE m.id IN (SELECT id FROM membersection);

Как мне идти вперед отсюда?Я понятия не имею, как извлечь sectionid из таблицы membersection, а затем извлечь имя раздела из идентификатора раздела, используя этот идентификатор, чтобы я мог проверить, содержит ли имя раздела ранее указанное слово.

member:

id member_number registration_date

membersection:

memberid sectionid

person:

id имя, фамилия

раздел:

имя

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

В вашем вопросе есть некоторая неопределенность в отношении того, как структурированы ваши данные; Какие первичные и внешние ключи?

Но, сделав некоторые предположения, вы почти на месте, вы можете объединить несколько операторов объединения:

select
  m.id,
  p.firstname,
  p.lastname
from
  member m
  inner join person p on
    m.id = p.id
  inner join membersection ms on
    m.id = ms.memberid
  inner join section s on
    ms.sectionid = s.id
where
  s.name like '%xyz%'
0 голосов
/ 16 мая 2018

Не совсем очевидно, что происходит с вашими отношениями с данными, но это будет основной путь, по которому вы, возможно, захотите пойти (LEFT JOIN, поскольку я не знаю отношения):

SELECT m.id, p.firstname, p.lastname, ms.sectionid
FROM member m
INNER JOIN person p ON m.id = p.id 
LEFT JOIN section s ON m.id = s.id
LEFT JOIN membersection ms ON m.id = ms.memberid
WHERE s.name = 'xyz'
0 голосов
/ 16 мая 2018

Просто продолжай присоединяться. И в конце используйте LIKE, чтобы проверить, содержит ли section.name 'xyz'.

SELECT m.id,
       p.firstname,
       p.lastname
       FROM member m
            INNER JOIN person p
                       ON p.id = m.id
            INNER JOIN membersection ms
                       ON ms.memberid = m.id
            INNER JOIN section s
                       ON s.id = ms.sectionid
       WHERE s.name LIKE '%xyz%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...