Правильное использование ключей при объединении таблиц в SQL

В настоящее время изучает науку данных с помощью SQLite и Pandas. Работа над набором данных о политических взносах. Мне интересно, какова цель WHERE contributors.candidate_id = candidates.id в приведенном ниже коде при соединении двух таблиц. Учитывая, что моя цель состоит в том, чтобы извлечь участников для конкретного кандидата и включить их имя из другой таблицы, разве результаты не будут такими же без этого условия?

implicit_join_sel = """
SELECT
    contributors.last_name, contributors.first_name, contributors.amount, candidates.last_name
FROM
    contributors, candidates
WHERE
    contributors.candidate_id = candidates.id
AND candidates.last_name = 'Obama';
"""

db.cursor().execute(implicit_join_sel)

Выход:

contributors.last_name  contributors.first_name contributors.amount candidates.last_name
0   Buckler Steve   50.0    Obama
1   Buckler Steve   25.0    Obama
2   Buckheit    Bruce   100.0   Obama
3   Buckel  Linda   2300.0  Obama
4   Buckel  Linda   -2300.0 Obama

К сведению, сводка таблиц:

--Candidates--
    id  first_name  last_name   middle_name party
0   33  Joseph  Biden   NaN D
1   36  Samuel  Brownback   NaN R

--Contributors--
    last_name   first_name  middle_name street_1    street_2    city    state   zip amount  date    candidate_id
0   Agee    Steven  NaN 549 Laurel Branch Road  NaN Floyd   VA  24091   500.0   2007-06-30  16
4   Akin    Charles NaN 10187 Sugar Creek Road  NaN Bentonville AR  72712   100.0   2007-06-16  16

1 ответ

Решение

Синтаксис FROM пункт, один, приведет к каждому ряду contributors таблица должна быть присоединена к каждой строке candidates Таблица. WHERE Предложение ограничивает объединение только теми парами строк с одинаковым идентификатором кандидата.

Форма вашего FROM а также WHERE пункты не так ясно, как более современный синтаксис SQL, который выразил бы это как

FROM
   contributors
   inner join candidates on contributors.candidate_id = candidates.id
Другие вопросы по тегам