这可能是
一个简单的答案,但在过去的几天里,我一直在研究这个问题,它开始让我感到沮丧。
我有一个具有多对多关系的数据库
------------- --------------------- -------------------|图片 | |用户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 会话中看到结果。