Необходимо использовать критерии из нескольких таблиц для получения данных из нескольких таблиц - PullRequest
1 голос
/ 14 августа 2011

У меня небольшая икота в отношении конкретного запроса SQL.Мне нужно объединить данные из двух таблиц, одновременно ограничивая данные (но не обязательно захватывая их) с помощью третьей таблицы.Таблицы следующие:

    MEMBERS(member_id,first_name,last_name)
    MEMBERS_GROUPS(member_id,group_id)
    CHARGES(charge_id,member_id,charge_amount,status)

Мне нужно найти все расходы для всех членов определенной группы, но я также хочу получить имя и фамилию из таблицы MEMBERS.Вопрос, который я до сих пор задавал:

select c.*, m.first_name, m.last_name 
FROM charges c 
LEFT JOIN member m 
    ON c.member_id=m.member_id 
INNER JOIN members_groups mg 
    ON mg.group_id=1

Я также пытался:

SELECT c.*, m.first_name, m.last_name 
FROM charges c, members_groups mg, member m 
WHERE c.member_id=mg.member_id 
   AND mg.group_id = 1 
   AND c.status='Valid' 
   AND c.member_id = m.member_id

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

1 Ответ

0 голосов
/ 14 августа 2011

Возможно, вам также нужно ограничить ВНУТРЕННЕЕ СОЕДИНЕНИЕ на members_groups эти строки с mg.member_id = m.member_id:

SELECT c.*, m.first_name, m.last_name 
FROM charges c 
LEFT JOIN member m 
    ON c.member_id=m.member_id 
INNER JOIN members_groups mg 
    ON mg.group_id=1
    AND mg.member_id = m.member_id
...