Обʼєднання (Joins)
Якщо ви не вибираєте стовпці з обох таблиць або між таблицями не визначено звʼязок, усе одно можна скористатися методом .join() для таблиці, щоб обʼєднати її з іншою таблицею й отримати додаткові дані для вашого запиту. join() приймає обʼєкт таблиці, яку потрібно приєднати, як перший аргумент, і умову, що визначає звʼязок між таблицями, як другий аргумент. Нарешті, застосуйте метод .select_from() до виразу select, щоб обгорнути секцію join. Наприклад, у відео Джейсон виконав такий код, щоб обʼєднати таблицю census із таблицею state_fact так, щоб стовпець state у таблиці census відповідав стовпцю name у таблиці state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Ця вправа є частиною курсу
Вступ до баз даних у Python
Інструкції до вправи
- Створіть вираз для вибору УСІХ стовпців із таблиць
censusіstate_fact. Щоб, наприклад, вибрати УСІ стовпці з двох таблицьemployeesіsales, ви б використалиstmt = select([employees, sales]). - Додайте
select_fromдоstmt, щоб обʼєднати таблицюcensusз таблицеюstate_factза стовпцемstateуcensusі стовпцемnameу таблиціstate_fact. - Виконайте вираз, щоб отримати перший результат, і збережіть його як
result. Цей код уже написано. - Надішліть відповідь, щоб пройтися по ключах обʼєкта результату й вивести для кожного ключ і значення!
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Build a statement to select the census and state_fact tables: stmt
stmt = select([____, ____])
# Add a select_from clause that wraps a join for the census and state_fact
# tables where the census state column and state_fact name column match
stmt_join = stmt.select_from(
____(____, census.columns.____ == state_fact.columns.____))
# Execute the statement and get the first result: result
result = connection.execute(stmt_join).first()
# Loop over the keys in the result object and print the key and value
for key in result.keys():
print(key, getattr(result, key))