我创建了一个从3个数据库表中获取数据的查询。
在表Movimenti
中,我有一个日期字段yyyy-MM-dd
,其中where子句我只想获取给定的数据,而是从所有日期获取数据,我错在哪里?< / p>
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
中的任何一个失败,那么m.Date
上的过滤器将会完全被忽略。