проблема с запросом на соединение - PullRequest
1 голос
/ 09 февраля 2011

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

Я использую запрос:

SELECT p.post_id, p.post_title, t.tag_id, t.tag_name
FROM posts p
LEFT JOIN posts_tags pt ON pt.post_id = p.post_id
LEFT JOIN tags t ON pt.tag_id = t.tag_id

Есть идеи?

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Каждый пост может иметь много тегов.Я бы предложил использовать GROUP_CONCAT () MySQL и получить все теги в одном поле.Затем вы можете проанализировать это поле в своем скрипте, если вам нужно.

edit Похоже, что вы остались присоединиться к таблице тегов, поэтому он возвращает только эту строку для тега,Попробуйте переключаться между таблицами в предложении ON, чтобы оно соединяло другое направление.Затем вам нужно будет перебрать результаты (теперь у него должна быть строка для каждого тега.) Мое оригинальное решение сгруппировало все теги в одно поле.

0 голосов
/ 09 февраля 2011

Это должно работать нормально.Фактически, потому что она близка к структуре данных SO, я создал ее с использованием data.stackexchange.com, и она отлично работает там

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