如何获得表的不同对?

时间:2017-09-27 15:12:03

标签: mysql

表格

Vector

查询:查找具有Similarityi的所有不同用户对,j> = 0.7其观看列表至少与12部电影重叠。结果应包含三列:第一个用户的用户ID和第二个用户的用户ID,以及他们观看的电影数量。

我的查询:返回null

CREATE TABLE Users (user_id INTEGER PRIMARY KEY,
                   name VARCHAR(100) NOT NULL);
CREATE TABLE Ratings (user_id INTEGER NOT NULL,
                      rating INTEGER NOT NULL,
                      movie_name varchar(100) NOT NULL,
                      PRIMARY KEY(user_id, movie_name),
                      FOREIGN KEY (user_id) REFERENCES Users(user_id));
CREATE TABLE Similarity (user1_id INTEGER NOT NULL,
                      user2_id INTEGER NOT NULL,
                      similarity FLOAT,
                      PRIMARY KEY (user1_id, user2_id),
                      FOREIGN KEY (user1_id) REFERENCES Users(user_id),
                      FOREIGN KEY (user2_id) REFERENCES Users(user_id));

我意识到SELECT DISTINCT U.user_id, U2.user_id FROM Users U, Users U2, Ratings R, Similarity S WHERE U.user_id != U2.user_id AND R.user_id = U.user_id AND R.user_id = U2.user_id AND S.similarity >= 0.7; 使表返回null。但是如何获得不同的user_id配对?

1 个答案:

答案 0 :(得分:0)

您需要加入表格

e.g。

    FROM User U 
    JOIN Ratings R ON U.user_id = R.User_id
    JOIN Similarity S ON S.user2_id = U.user_id

我先加入他们,然后使用你的where子句