我需要一些以下sql语句的帮助。我有三个表,一个存储URL(web),一个存储userdata(用户)以及它们之间的关系(web_user,n:m)。
CREATE TABLE web (
url_id integer PRIMARY KEY AUTOINCREMENT,
url varchar NOT NULL UNIQUE
);
CREATE TABLE user (
usr_id integer PRIMARY KEY NOT NULL,
username varchar NOT NULL,
firstname varchar NOT NULL,
lastname varchar NOT NULL,
language varchar
);
CREATE TABLE web_user (
url_id integer NOT NULL,
usr_id integer NOT NULL,
alias varchar NOT NULL,
PRIMARY KEY ( url_id, usr_id)
);
我想执行一个查询来接收特定用户的所有存储的网址,比如usr_id 25525.我尝试了以下内容,但它无法正常工作..
sqlite> SELECT web.url_id, web.url
FROM web
JOIN web_user ON web.url_id = web_user.url_id
JOIN user ON user.usr_id = web_user.usr_id
WHERE user.usr_id = 25525;
任何人都可以给我一个提示错误吗?
编辑:
以下是每个表格的一些示例数据:
网络
SELECT url_id, url FROM web;
2|https://lorem-rss.herokuapp.com/feed01
3|https://lorem-rss.herokuapp.com/feed02
4|https://lorem-rss.herokuapp.com/feed03
用户
SELECT usr_id, nickname, firstname, lastname, language FROM user;
25525|TestDummy|Jonathan|Snow|DE
web_user
SELECT usr_id, url_id, alias FROM web_user;
25525|2|feed01
25525|3|feed02
25525|4|feed03
我期待用户25525的格式为web.url_id,web.url的3个结果。使用上面的查询我遗憾地得到0结果..我不知道这里有什么错误..!
答案 0 :(得分:0)
我发现了问题!它一如既往地坐在电脑前。
我在我的应用程序中使用了一个准备好的语句,并混合了usr_id和url_id的值,因此usr_id具有url_id值,反之亦然。我修好了,现在一切正常。谢谢大家的帮助!