sqlite选择查询
问题描述:
我正在与SQLite的Android工作。sqlite选择查询
我的数据库有2个表:
Table 1: cars
_id(int,pri-key)
reg(text)
type(text)
Table 2: jobs
_id(int,foreign-key)
date(date)
我需要一个SQLite statment这将让我所有的汽车还没有过去3周有一份工作。荫实际上移植从C#应用程序,我用了这个statment(在MySQL)是
SELECT c.id, c.reg, c.type FROM buses c WHERE NOT EXISTS (SELECT NULL FROM jobs j WHERE j.id = c.id AND j.date >= CURRENT_DATE - INTERVAL 21 DAY
但SqliteDataBase对象,我在Android平台采用不同的格式,我将如何运行此查询?
在此先感谢。
答
我会尝试这样的事:
SELECT * from cars A LEFT OUTER JOIN jobs B on A._id = B._id WHERE B._id IS NULL OR B.date < date('now', '-21 days');
左外连接,确保了从汽车表中的所有值输出(包括不符合加入条件的那些显示 - 即在作业表中没有条目的那些)。在WHERE标准中,过滤条件为在作业表中没有条目(B._id IS NULL
)或超过21天的条目B.date < date('now', '-21 days')
当然,我假设,将只有1条记录每辆车的乔布斯表。如果还有更多,您可能需要使用MAX
来获取最新日期。
工作液:SELECT * from cars A LEFT OUTER JOIN jobs B on A._id = B._id GROUP BY A._id HAVING B._id IS NULL OR MAX(B.date) < date('now', '-21 days');
行不通的IM affriad – brux 2010-11-22 12:17:21
我也试着从sqlite3的外壳内运行的查询,我得到“WHERE附近的语法错误 – brux 2010-11-22 12:31:50
顺便说一句,1号车可以有很多工作 – brux 2010-11-22 12:38:42