2015-04-23 36 views
1

我創建了一個查詢,該查詢從3個數據庫表中獲取數據。 在表Movimenti我有一個日期字段yyyy-MM-dd,與where條款我想只得到給定的數據,而不是我從所有日期的數據,我錯在哪裏?Android SQLite左加入 - 日期篩選器被忽略

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

這看起來不正確的語法。 'WHERE'在哪裏?我很驚訝它甚至執行。 –

回答

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中的任何一個失敗,則上的過濾器將被完全忽略。