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');

+0

行不通的IM affriad – brux 2010-11-22 12:17:21

+0

我也试着从sqlite3的外壳内运行的查询,我得到“WHERE附近的语法错误 – brux 2010-11-22 12:31:50

+0

顺便说一句,1号车可以有很多工作 – brux 2010-11-22 12:38:42