我需要你的帮助来弄清楚如何进行查询。 我的想法是建立一个奖励用户的信用系统。 管理员输入信用描述(例如,用户订阅了时事通讯,他发布了至少10条评论......)。 我有3张桌子:
我会提取一个摘要html表,其行由用户名和Y或N组成,具体取决于用户和奖励之间是否存在关系。
答案 0 :(得分:2)
使用以下查询显示特定用户的所有奖励
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
并将其用作子查询以获取用户详细信息
e.g:
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
注意:未经测试。
答案 1 :(得分:1)
听起来像你需要在users表和rewards_users表之间进行LEFT JOIN然后处理null 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;