Как выполнить простое объединение для нескольких таблиц? - PullRequest
2 голосов
/ 27 октября 2011

У меня есть то, что, я уверен, вполне корректный вопрос, но я не могу на всю жизнь заставить это простое соединение работать.

В основном у меня есть 3 таблицы:

  • ЧЛЕНЫ (имя, фамилия),
  • MEMBER_TO_GROUP (member_id, group_id)
  • ПЛАТЕЖИ (member_id, дата, сумма).

Я хочу получить все платежи от участников определенной группы. Используя только две таблицы, я могу найти все ПЛАТЕЖИ определенной группы без информации о ЧЛЕНЕ, или я могу найти всю информацию о ЧЛЕНАХ без информации о ПЛАТЕЖЕ. Однако, когда я пытаюсь добавить третью таблицу, возвращаются неверные данные (например, я получаю членов, не входящих в группу). Это основной запрос, который я использую:

SELECT
    p.*,
    m.first_name,
    m.last_name
FROM
    members m,
    payments p,
    member_to_group mg
WHERE
    mg.group_id = 12
    AND mg.member_id = p.member_id
    AND m.member_id = p.member_id

Я не уверен, где разъединение, но любая помощь будет наиболее ценной.

1 Ответ

2 голосов
/ 27 октября 2011

Я думаю, что это должно получить то, что вы хотите:

SELECT p.*,
       m.first_name,
       m.last_name
FROM payments p
INNER JOIN members m
  ON m.member_id = p.member_id
INNER JOIN member_to_group mg
  ON mg.member_id = m.member_id
WHERE mg.group_id = 12
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...