Выбрать столбцы из другой таблицы после левого соединения

После запуска этого запроса на df1,

"SELECT 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1")

Я получаю что-то вроде этого:

type    user     time
max     a        679..
min     b        12..

У меня есть еще один набор данных:

id      email
a       [email protected]
b       [email protected]

Я хочу присоединиться к ним, чтобы мой конечный результат был таким:

type    user     time      email
max     a        679..     [email protected]
min     b        12..      [email protected]

в идеале в том же запросе. Я пробовал это:

"SELECT 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1 LEFT JOIN df2 ON df2.id == df1.user")

до сих пор он не выдает ошибку, но как только я выбираю столбцы из df2,

"SELECT email, 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1 LEFT JOIN df2 ON df2.id == df1.user")

Я получаю ошибки, которые:

PandaSQLException: (sqlite3.OperationalError) no such column: email

Пожалуйста, отформатируйте запросы, чтобы мы могли их прочитать.

Tim Biegeleisen 10.04.2022 14:01
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
30
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны присоединиться к результату объединения как подзапрос к df2:

SELECT t.*, df2.email 
FROM (
  SELECT 'max' type, user, MAX(daytime) time FROM df1 
  UNION ALL 
  SELECT 'min' type, user, MIN(daytime) time FROM df1 
) t LEFT JOIN df2 ON df2.id = t.user;

Вы не можете присоединиться только к двум таблицам и объединить их в другой выбор

SELECT type,    df3.user,     time,      email
FROM
 (SELECT 'max' type, user, MAX(daytime) time FROM df1 UNION ALL SELECT 'min' type, user, MIN(daytime) time FROM df1) df3
LEFT JOIN df2 ON df2.id == df3.user

Другие вопросы по теме