n:m sql语句

时间:2017-11-06 21:46:35

标签: sql sqlite

我需要一些以下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结果..我不知道这里有什么错误..!

1 个答案:

答案 0 :(得分:0)

我发现了问题!它一如既往地坐在电脑前。

我在我的应用程序中使用了一个准备好的语句,并混合了usr_id和url_id的值,因此usr_id具有url_id值,反之亦然。我修好了,现在一切正常。谢谢大家的帮助!