0

photos テーブル (写真を含む) と follow テーブル (ユーザーをフォローしているユーザーに関する情報を含む) を持つ MySQL データベースがあります。

現在のユーザーがフォローしているユーザーから写真を読み込む次のコードがあります。

SELECT photos.* FROM photos,follows 
WHERE follows.following = photos.uid AND 
      follows.follower=$current_uid 
ORDER BY photos.id DESC

ユーザーがアップロードした写真と、ユーザーがフォローしている写真の両方のリストをロードしたいと考えています。次のことを試しましたが、重複したエントリが大量に発生し続けます。

SELECT photos.* 
FROM photos,follows 
WHERE (follows.following = photos.uid AND 
       follows.follower=$current_uid) OR 
       photos.uid=$current_uid
ORDER BY photos.id DESC

誰でもこれを手伝ってもらえますか?

4

1 に答える 1

0

これを試して:

SELECT
  photos.*
FROM
  photos
LEFT OUTER JOIN
  follows
ON
  photos.uid = follows.following AND follows.follower = $current_uid
WHERE
  photos.uid = $current_uid
OR
  follows.following IS NOT NULL

または:

SELECT
  photos.*
FROM
  photos
WHERE
  photos.uid = $current_uid
OR
  photos.uid IN (SELECT following FROM follows WHERE follower = $current_uid)
于 2012-08-22T01:17:25.090 に答える