Правильное использование ключей при объединении таблиц в 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