Как не выбрать дублированную строку, когда первичный ключ используется в той же таблице? - PullRequest
0 голосов
/ 07 апреля 2020

Для школьного проекта в PHP (для упрощения это форум) у меня есть запрос, но он довольно сложный. Если бы вы могли дать мои советы, а не ответы, это было бы идеально!

Вот таблица , где сообщение (то есть PostId) может быть ответом или вопросом, и если ParentId == NULL, тогда это вопрос. В противном случае ParentId - это вопрос, на который ответят на сообщение.
Я хотел бы реализовать форму поиска, но я застрял в запросе, вот что я уже пробовал:

("SELECT * FROM Post, User WHERE Post.AuthorId = user.UserId and Title LIKE :Body or Body LIKE :Body
UNION
SELECT * FROM Post, User WHERE Post.AuthorId = user.UserId and UserName LIKE :Body 
LIMIT 0, 5", array("Body"=>"%$search%")

Проблема в том, что, в конце концов, если запрос выбирает ответ, я возьму его Родителя, чтобы показать вопрос, поэтому он может закончиться показом дублированных вопросов. (Например: если искомый пользователь является автором вопроса и также ответил на его сообщение, запрос выберет его первое сообщение и его ответ: дублированный)

Я мог бы сделать сортировку в PHP но, поскольку я хотел бы показать 5 результатов на страницу, это невозможно сделать таким образом.

Так что мой вопрос: как не выбрать сообщение, если его родитель уже был выбран ранее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...