我需要你的幫助來弄清楚如何進行查詢。 我的想法是建立一個獎勵用戶的信用體系。 管理員輸入學分的描述(例如,用戶訂閱了新聞通訊,他發表了至少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