SQL выбор одной записи несколько раз

SELECT p.* FROM StatusUpdates p JOIN FriendRequests fr ON (fr.From = p.AuthorId OR fr.To = p.AuthorId) WHERE fr.To = ".$Id." OR fr.From = ".$Id." AND fr.Accepted = 1 ORDER BY p.DatePosted DESC 

Я использую этот код SQL в тот момент, который кто-то написал для меня по другому вопросу. Я использую PHP, но это не должно иметь большого значения, поскольку единственное, что я делаю с ним, это объединение в него переменной.

То, что это предназначено, – это пройти через всех своих друзей и получить все свои статусные должности и заказать их. Он отлично работает, но он выбирает сообщения «Id Id» либо совсем не так, либо количество друзей, которые у вас есть

Например, если бы у вас было 5 друзей, он бы забирал наши сообщения 5 раз. Я только хочу, чтобы это делалось один раз. Как я могу это сделать?

Вам нужно использовать LEFT JOIN вместо соединения, если вы хотите отображать идентификатор сообщения независимо от количества друзей. И GROUP BY p.id чтобы не показывать одни и те же записи более одного раза:

 SELECT p.* FROM StatusUpdates p LEFT JOIN FriendRequests fr ON ((fr.From = p.AuthorId OR fr.To = p.AuthorId) AND fr.Accepted = 1) WHERE p.AuthorId = ".$Id." GROUP BY p.id ORDER BY p.DatePosted DESC 

Либо GROUP BY p.id либо SELECT DISTINCT p.id, p.*