确定多对多关系中的内容


这可能是

一个简单的答案,但在过去的几天里,我一直在研究这个问题,它开始让我感到沮丧。

我有一个具有多对多关系的数据库

-------------     ---------------------     -------------------|图片 |    |用户2img |    |用户 |-------------     ---------------------     -------------------|图像ID |    |ID |    |用户标识 ||图片网址 |    |图像ID |    |用户名 ||imgAv |    |用户标识 |    |用户邮箱 |-------------     ---------------------     -------------------

user2img 表指示允许用户查看的图像。

我正在尝试确定一个SQL查询,该查询将列出每个图像(一次而不重复),并告诉我指定的用户是否有权查看该图像。

所以输出像,

(其中用户 ID = '1')

----------------------------|图像ID |图片网址 |交通 |----------------------------|1 |三十 | 是 ||2 |YYY | 否 ||3 |QQQ | 是 ||4 |存款准备金率 | 是 ||5 |万维网 | 否 ||6 |SSS | 是 | 等。。。----------------------------

谢谢

一种可能性是(我承认不是最好的,也可能不是很有效)为在复合键表上进行内部连接的用户选择所有匹配的图像,并使用否定选择(iid 是我的测试表中的 imageId):

select 
    iid, url, 'yes'
    from user_has_image
    inner join image on user_has_image.iid = image.id
    inner join user on user_has_image.uid = user.id
    where user.id = 1
union
select 
    iid, url, 'no'
    from user_has_image
    inner join image on user_has_image.iid = image.id
    inner join user on user_has_image.uid = user.id
    where user.id <> 1

您可以在此 SQLFiddle 会话中看到结果。

相关内容

  • 没有找到相关文章

最新更新