1

Pictures 和 Seen_pictures,将 Pictures 表中的图片显示给用户,然后将该图片(它在表中的 ID)移动到 Seen_Pictures,并将 Pictures 表中的新图片显示给用户。我需要一个 mysql 方案来输出 Pictures 和 Seen_pictures 表之间的差异,这样我就知道用户没有看到哪些图片,并且可以输出它们。

到目前为止我有这个,但它只适用于 1 个用户,我需要它来考虑许多不同的用户:

$result = mysqli_query(
    $link, 

    "SELECT o_Pics.Pic.PicID 
    FROM o_Pics.Pic 
    LEFT JOIN o_SeenPics.Seen ON o_Pics.Pic.PicID=o_SeenPics.Seen.PicID 
    WHERE NOT o_Pics.Pic.ID='".$ID."' AND o_SeenPics.Seen.PicID IS NULL"
);
4

2 回答 2

0

怎么样

SELECT p.p_id FROM Picture p WHERE p.p_id NOT IN 
   (SELECT s.p_id FROM Seen_Picture s WHERE s.u_id = "$user_id")

Picture
p_id(Primary Key) picture

Seen_Picture
id(Primary Key) u_id p_id
于 2012-07-23T19:10:43.947 回答
0

我认为您可以对原始查询进行一些小的修改以获得您想要的内容:

SELECT s.UserId, p.PicID 
FROM o_Pics.Pic p LEFT JOIN
     o_SeenPics.Seen s
     ON p.PicID = s.PicID and
        p.OwnerUserId != s.UserId
where s.PicId is null and p.OwnerUserId != s.UserId   

这假设 pic 中包含所有者的用户 ID。它还返回未看到图片的用户 ID。

于 2012-07-23T20:11:14.130 回答