好的,我正在制作一个个人资料页面,我将在其中调用所有用户的信息。在网站内,用户将获得积分并获得徽章。我有35个徽章。而不是在我的用户表中为每个用户的每个徽章(是/否来决定用户是否获得徽章)都保留一行,我想知道如何在不炸毁用户表的情况下做到这一点。
我有一个带有索引、名称、描述和照片的徽章表。我想知道我可以在我的用户表中为徽章制作一行,并用“,”分隔徽章编号。然后破译徽章,使它们都打印在页面上。我觉得我可以做到,但不知道怎么做。
请帮忙。接受其他建议
您可以创建这样的表结构。
表结构
用户
userId 用户名
徽章
徽章ID 徽章名称
用户徽章
userId 徽章ID
-- 返回给定用户在单行和逗号分隔字段中的所有徽章。
select group_concat(b.badgeName) as usersAllBadges
from user_badges ub
inner join users u on u.userId = ub.userId
inner join badges b on b.badgeId = ub.badgeID
where ub.userID=1
-- 返回给定用户的所有徽章单独的行。
select b.badgeName
from user_badges ub
inner join users u on u.userId = ub.userId
inner join badges b on b.badgeId = ub.badgeID
where ub.userID=1