私は友人とテーブルの写真と呼ばれるテーブルを持っています。友達の写真または友達の写真を持っているユーザーを照会しようとしています。friendsテーブルで内部結合をエイリアスする必要があると思いますが、よくわかりません
Friends Table
user_id int
friend_id int
[other attribute field]
Photos Table
id int
user_id int
[other attribute field]
たとえば、友人の写真をクエリしたい場合は、実行します
SELECT `photos`.`id` FROM `photos` LEFT JOIN `friends` ON (`friends`.`friend_id` = `photos`.`user_id`) WHERE `friends`.`user_id` = 1
または、ユーザー テーブル ID だけをクエリしたい場合は、
SELECT `photos`.`id` FROM `photos` WHERE `photos`.`user_id` = 1
問題は、同じ結果セットで両方を取得しようとしたときです
SELECT `photos`.`id`
FROM `photos`
LEFT JOIN `friends` ON ( `friends`.`friend_id` = `photos`.`user_id` )
WHERE `friends`.`user_id` =1
OR `photos`.`user_id` =1
LIMIT 0 , 30
左の結合のために、明らかに間違った結果が得られます。私が持っているすべての友人に対して結果が得られます
OR句などのために別名テーブルを内部結合する必要があると考えていますが、それを理解できません。