2012-12-08 74 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