условное объединение столбцов в sql lite

#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