基于用户选择的用户之间的动态数据匹配

时间:2015-01-05 00:34:08

标签: php sql

我希望你们中有一位经验丰富的程序员能够对这种情况有所了解:

我的网站允许用户创建个人资料并输入他们最喜欢的音乐家,所有这些音乐家都位于预先存在的音乐家数据库中。

根据他们选择的艺术家,我想向他们展示选择了相同艺术家的其他用户。

有人可以提供有关如何有效实现这一目标的建议吗?

我正在使用SQL和PHP作为后端。

1 个答案:

答案 0 :(得分:1)

您需要在用户和音乐家之间创建一个交叉引用表,用于定义“喜欢”和“喜欢”的用户。关系。至少它只需要包含用户ID和音乐家ID。

CREATE TABLE user_likes_musician (
    user_id INT NOT NULL,
    musician_id INT NOT NULL,
    PRIMARY KEY(user_id, musician_id)
);

要查找喜欢某位音乐家的用户,您只需将该表与用户表一起加入:

SELECT * FROM users
    JOIN user_likes_musician
        ON (users.ID = user_likes_musician.user_id
            AND user_likes_musician.user_id <> [current user id]
            AND user_likes_musician.musician_id = [musicians id]);