1

我们提供一些奖金供会员选择,我想显示一个他们尚未选择的奖金的弹出窗口。bonus包含有关不同赠金的信息,并且selected_bonuses包含赠金 id 和会员 id。

SELECT bonus.* FROM bonus 
LEFT JOIN selected_bonuses 
ON bonus.id = selected_bonuses.bonus_id 
WHERE selected_bonuses.member_id = 'xxxx'

这将显示为会员“xxxx”选择的奖金。

SELECT bonus.* FROM bonus 
LEFT JOIN selected_bonuses 
ON bonus.id = selected_bonuses.bonus_id 
WHERE selected_bonuses.member_id IS NULL

这显示未被任何成员选择的奖金。我想显示会员 'xxxx' 没有选择的奖金。

有什么建议么?

4

2 回答 2

0

随着您的查询

SELECT bonus.* FROM bonus 
LEFT JOIN selected_bonuses 
ON bonus.id = selected_bonuses.bonus_id 
WHERE selected_bonuses.member_id = 'xxxx'

您将有关每个奖金的信息加入每个选择了该奖金的成员,然后只选择一个成员。

如果您将每个奖金仅加入您感兴趣的成员,然后选择不存在此类成员的奖金,您应该得到您想要的:

SELECT bonus.* FROM bonus 
LEFT JOIN selected_bonuses 
ON bonus.id = selected_bonuses.bonus_id 
AND selected_bonuses.member_id = 'xxxx'
WHERE selected_bonuses.member_id IS NULL
于 2013-01-27T10:29:26.087 回答
-1

你可以像下面这样...

 SELECT bonus.* FROM bonus 
 LEFT JOIN selected_bonuses 
 ON bonus.id = selected_bonuses.member_id 
 WHERE (selected_bonuses.member_id = 'xxx' AND selected_bonuses.bonus_id IS NULL);

我认为它会正常工作..

于 2013-01-27T10:29:48.190 回答