JOIN идентификаторы с 0 в качестве родительских идентификаторов, к запросу идентификаторов, которые имеют разные родительские идентификаторы

0

Я пытаюсь составить список дискуссий, связанных с пользователем.

Представьте себе, если вы:

posts
-------------------------------------------------------------------
ID | PID | FID | TITLE                                    | USER
1  |  0  |  1  | Hello World                              | User 1
2  |  0  |  23 | Endangered Squirrels & How to Cook Them  | Eddy
3  |  1  |  1  | Re: Hello World                          | Eddy
4  |  1  |  1  | Re: Hello World                          | Clark
5  |  0  |  3  | Any Vacation Suggestions?                | Clark
6  |  5  |  3  | Re: Any Vacation Suggestions?            | Eddy
7  |  5  |  3  | Re: Any Vacation Suggestions?            | Clark
8  |  5  |  3  | Re: Any Vacation Suggestions?            | Ellen

Чтобы показать все сообщения Eddy, я использовал запрос для выбора сообщений с идентификаторами родителей DISTINCT (pid) и думал, что он работает. Вскоре я понял, что 0 только рассмотрел DISTINCT один раз, и если он создал новую тему и не ответил, это не было указано, если это не было его первым.

Итак, как мне получить список идентификаторов с DISTINCT pid и pid! = 0 и присоединить его к запросу идентификаторов, которые имеют pid = 0, где пользователь = Eddy

Это первый вопрос, который я когда-либо задавал, поэтому простите меня, если он не идеален.

ОБНОВЛЕНО С ЗАПРОСОМ

Я с тех пор перешел на использование GROUP BY, поэтому я могу получить идентификатор сообщения, но проблема все та же

Меня попросили предоставить мой запрос. Это тот, который я использую, который предоставляет только 1 строку с pid как 0. Я также обновил свой макет таблицы выше, чтобы показать идентификатор форума, в запросе ниже он только тянет темы из списка общедоступных форумов.

SELECT id, pid FROM posts WHERE fid IN (1,2,3) AND author = 'Eddy' GROUP BY pid ORDER BY IF(latest > timestamp, latest, timestamp) DESC LIMIT 1, 5;

спасибо за любую помощь.

  • 0
    Опубликуйте также свой запрос.
  • 0
    Вместо того, чтобы пытаться описать код на естественном языке, покажите реальный код. Возможно, вам будет интересно узнать, как задать хороший вопрос и как создать минимальный, полный и проверяемый пример .
Показать ещё 2 комментария
Теги:
join
distinct

1 ответ

0

Я смог сделать то, что хотел, с простым IF в GROUP BY, это было так просто.

SELECT id, pid
FROM posts
WHERE fid IN (1,2,3)
AND author = 'Eddy'
GROUP BY IF(pid > 0, pid, id)
ORDER BY IF(latest > timestamp, latest, timestamp) DESC
LIMIT 1, 5;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню