#sqlite #join #conditional-statements #left-join #sql-null
#sqlite #Присоединиться #условные операторы #левое соединение #sql-null
Вопрос:
Как и на следующей веб-странице, я хочу выполнить условное объединение столбцов в sql lite
https://dev.to/gschro/conditional-column-join-in-sql-5g03
однако кажется, что это невозможно?
Итак, это мое объединение:
left join query_506556 as rdi_data on rdi_data.time = y.datetime_weather AND case when a.monitor_id is null then 1 when a.monitor_id = rdi_data.device_id then 1 else 0
Я хочу присоединиться к 2 вещам: datetime из моей таблицы y (что нормально) и monitor_id из моей таблицы a, которая не всегда представляет. И я хочу быть уверен, что, когда оно не представлено, данные из rdi_data также копируются
код ошибки:
Error running query: near "order": syntax error
Возможно ли такое объединение в sql lite?
Ответ №1:
Это то, что вы хотите?
left join query_506556 as rdi_data
on rdi_data.time = y.datetime_weather
and (a.monitor_id is null or a.monitor_id = rdi_data.device_id)
Или, если вы null
также хотите сопоставить значения (но это не похоже на то, что вы просили), затем используйте is
, который является оператором, защищенным от нуля в SQLite:
left join query_506556 as rdi_data
on rdi_data.time = y.datetime_weather
and a.monitor_id is rdi_data.device_id