我需要你的帮助来弄清楚如何进行查询。 我的想法是建立一个奖励用户的信用体系。 管理员输入学分的描述(例如,用户订阅了新闻通讯,他发表了至少10条评论......)。 我有3个表:如何检查是否存在关系 - 多对多关系
- 用户(ID和名称),
- 奖励(ID和说明),
- rewards_users(id_reward,id_user)。
根据用户与奖励之间是否存在关系,我将提取一个由用户名和Y或N形成行的摘要html表。
我需要你的帮助来弄清楚如何进行查询。 我的想法是建立一个奖励用户的信用体系。 管理员输入学分的描述(例如,用户订阅了新闻通讯,他发表了至少10条评论......)。 我有3个表:如何检查是否存在关系 - 多对多关系
根据用户与奖励之间是否存在关系,我将提取一个由用户名和Y或N形成行的摘要html表。
使用下面的查询来显示所有的奖励为特定用户
SELECT r.description, CASE WHEN ru.user_id IS NULL THEN 'N' ELSE 'Y' END awarded
FROM rewards r
LEFT JOIN rewards_users ru ON r.reward_id=ru.reward_id AND ru.user_id = 1
,并用它作为一个子查询来获取用户的详细信息太
如:
SELECT u.user_id, u.user_name, ua.award, ua.awarded
FROM users u,
(
SELECT r.description, CASE WHEN ru.user_id IS NULL THEN 'N' ELSE 'Y' END awarded
FROM rewards r
LEFT JOIN rewards_users ru ON r.reward_id=ru.reward_id AND ru.user_id = u.user_id
) ua
WHERE u.userid=1
注意:未经测试。
听起来好像是你需要离开你的用户表和rewards_users表之间的连接,然后处理空rewards_id的实例:
select u.id as users_id,
u.name as users_name,
case when ur.rewards_id is null then 'N' else 'Y' end as hasRewards
from users u left join users_rewards ur
on u.id = ur.users_id;
为了澄清,你要拿出一个SQL查询根据你的三张桌子列出用户的所有奖励? – rhololkeolke
我的问题是知道用户什么时候没有奖励。 因此,我想检查,如果关系存在 – Dario