2015-04-23 4 views
1

Создал запрос, который берет данные из 3 таблиц базы данных. В таблице Movimenti У меня есть поле даты yyyy-MM-dd, где предложение where я хочу получить только данные данного, вместо этого я получаю данные со всех дат, где я ошибаюсь?Android SQLite LEFT JOIN - Фильтр даты игнорируется

String tabella_op = "SELECT m.id_operatore, " + 
      "m.date, " + 
      "m.ora_inizio, " + 
      "m.minuti_inizio, " + 
      "m.ora_fine, " + 
      "m.minuti_fine, " + 
      "m.id_servizio, " + 
      "c._id, " + 
      "c.nome, " + 
      "c.cognome, " + 
      "o.nome, " + 
      "s.colore " + 
      "FROM Movimenti m " + 
      "LEFT JOIN Clienti c ON (m.id_cliente = c._id) " + 
      "LEFT JOIN Servizi s ON (m.id_servizio = s._id) " + 
      "LEFT JOIN Operatori o ON (o._id = m.id_operatore) " + 
      "AND m.date = 2015-04-23 ORDER BY m.id_operatore ASC"; 
+0

Это не похоже на правильный синтаксис. Где «ГДЕ»? Я удивлен, что он даже выполняет. –

ответ

1

Вы должны переместить фильтр на первичной LEFT таблице (Movimenti) из состояния JOIN, обратно в WHERE пункта:

String tabella_op = "SELECT m.id_operatore, " + 
     "m.date, " + 
     "m.ora_inizio, " + 
     "m.minuti_inizio, " + 
     "m.ora_fine, " + 
     "m.minuti_fine, " + 
     "m.id_servizio, " + 
     "c._id, " + 
     "c.nome, " + 
     "c.cognome, " + 
     "o.nome, " + 
     "s.colore " + 
     "FROM Movimenti m " + 
     "LEFT JOIN Clienti c ON (m.id_cliente = c._id) " + 
     "LEFT JOIN Servizi s ON (m.id_servizio = s._id) " + 
     "LEFT JOIN Operatori o ON (o._id = m.id_operatore) " + 
     "WHERE m.date = 2015-04-23 ORDER BY m.id_operatore ASC"; 

Подробнее о том, почему это работает, как this here, но TL; DR - это то, что если какой-либо из LEFT JOINs не работает, тогда фильтр на будет вообще проигнорирован.

Смежные вопросы