我已经在MySQL上找了一段时间,阅读教程等等但是我已经很好地了解了它是如何工作的,所以这一次我想看看我是否可以自己做但我有一点感到困惑。
我正在尝试创建一个兴趣表,供用户在他们的兴趣之间进行交互。 我对如何为用户存储兴趣信息感到困惑。
user_interests 表:
interest_id | interests_names |
如果没有他们在数据库中输入自己的内容,如体育,生活,爱好,美食,音乐,游戏等,我怎么能输入特定的兴趣才能使用呢?
我应该在user_interests中为每个要存储的用户ID创建另一列吗?
我迷失在桌子上。
答案 0 :(得分:2)
你在找这样的东西吗?
CREATE TABLE users
(
user_id int not null auto_increment primary key,
user_name varchar(32)
);
CREATE TABLE interests
(
interest_id int not null auto_increment primary key,
interest_name varchar(32)
);
CREATE TABLE user_interests
(
user_id int not null,
interest_id int not null,
foreign key (user_id) references users (user_id),
foreign key (interest_id) references interests (interest_id)
);
列出所有用户及其兴趣
SELECT user_id, interest_name
FROM user_interests ui JOIN interests i
ON ui.interest_id = i.interest_id
获取对“体育”具有相同兴趣的用户列表
SELECT q.user_id, u.user_name
FROM
(
SELECT ui.user_id
FROM user_interests ui JOIN interests i
ON ui.interest_id = i.interest_id
GROUP BY user_id
HAVING MAX(i.interest_name = 'sports') = 1
) q JOIN users u
ON q.user_id = u.user_id
这是 SQLFiddle 演示
答案 1 :(得分:0)
创建另一个名为standardInterests或类似的表,并将其插入应用程序的列表框中,作为他们从中选择兴趣的数据源。