2010-05-18 75 views
0

我试图对sqlite做查询。我想检索与配置文件ID(我有该配置文件的ID)无关的服务器的服务器ID。表serpro表示表之间的n:n关系。Sqlite故障做查询

这是我的查询(显然这是错误的):

Select server._id, server.server 
from server where server._id != (SELECT server._id FROM server 
INNER JOIN serpro ON server._id = serpro._ids 
INNER JOIN profile ON profile._id = serpro._idp 
where profile._id=" + idProfile; 

而这些都是在创建表的语句:

create table server (_id integer primary key autoincrement,ip string not null, port string not null, server string not null); 

create table profile (_id integer primary key autoincrement, profile string not null); 

create table serpro (_ids integer not null, _idp integer not null, PRIMARY KEY (_ids, _idp), CONSTRAINT fk_idsps FOREIGN KEY (_ids) REFERENCES server(_id) ON DELETE CASCADE, CONSTRAINT fk_idspp FOREIGN KEY (_idp) REFERENCES server(_id) ON DELETE CASCADE); 

谢谢您的帮助!

+0

您收到了什么错误消息? – jabbie 2010-05-18 14:57:36

+0

您的查询构建容易受到SQL注入的影响。 – 2010-05-18 14:58:39

回答

1

只是做一个粗略的看看它,我会说你忘记关闭子查询。添加a)到您的查询结尾

"Select server._id, server.server from server where server._id != " + 
    " (SELECT server._id FROM server INNER JOIN serpro ON server._id = serpro._ids " + 
    " INNER JOIN profile ON profile._id = serpro._idp " + 
    " where profile._id=" + idProfile + ")"; 
+0

你说得对。谢谢 ! – fxi 2010-05-18 15:33:17