2012-12-08 33 views
0

我需要一些解决方案来选择标记为“公开”或标记为“朋友”的照片。我不知道怎么可能。需要选择标记为“公开”或标记为“朋友”的照片

是很容易选择公开的照片:

 $result = mysql_query("SELECT filename, ownerid, etc... FROM photos 
WHERE public='1' order by id DESC limit $start, $step") or die('Error'); 

甚至照片“朋友”标

$result = mysql_query("SELECT filename, ownerid, etc... FROM photos 
WHERE public='1' or for_friends='1' order by id DESC limit $start, $step") or die('Error'); 

但是......每张照片属于不同的所有者,并选择他们之前查询必须知道我是否是这张照片的拥有者的朋友。

+2

你的表结构? – Subodh

+0

我可以根据需要制作/更改表格结构。我只想知道如何做到这一点。我有存储文件名和所有者ID的“照片”表,我有一个朋友表。 – user1821484

回答

0

假设你有一个friends表,映射用户与他们的朋友,有列user_idfriend_user_id,那么你的查询应该是这样的:

SELECT * 
FROM photos p 
WHERE p.owner_id IN (SELECT friend_user_id 
        FROM friends 
        WHERE user_id = 1234) 
    AND (p.is_public = '1' OR p.for_friends = '1'); 
+0

我接受这个答案,但现在我需要找到一些解决方案来获得没有“或”声明的相同结果。 – user1821484

+0

对不起,我没有得到你?这只是你的查询不应该有'或'在里面吗? “ – Subodh

+0

”或“操作符总是引起索引问题。 ( – user1821484

0

我猜你有一个关系表,链接用户的用户,当你是一个loggued匹配的朋友关系

然后,你有一个用户ID。 检查用户标识是否为图片所有者的朋友。 如果是,请求公开图片+朋友图片 否则请求公开图片。

+0

是的,我有朋友桌,但正如我之前写的,每张照片属于不同的所有者,并在选择它们之前,查询必须知道,如果我是这张照片的所有者的朋友。我每页有30张照片,每张照片都属于不同的用户。 – user1821484