Немного сложно представить мою проблему в краткой форме, поэтому я прошу прощения, если название не имеет смысла.
В любом случае, вот проблема:
$query = '
SELECT issues.*, comments.author AS commentauthor, favorites.userid AS favorited FROM issues
LEFT JOIN comments ON comments.issue = issues.id AND comments.when_posted = issues.when_updated
LEFT JOIN favorites ON favorites.ticketid = issues.id AND favorites.userid = \'' . $_SESSION['uid'] . '\'
' . $whereclause . '
ORDER BY issues.when_updated ' . $order;
Не обращайте внимания на тот факт, что это PHP, поскольку я не запрашиваю помощь PHP.
Запрос извлекает группу issues
, и я хочу получить количество строк favorites
, у которых favorites.ticketid
соответствует issues.id
. Я использую LEFT JOIN favorites
не для того, чтобы получить то, что я только что упомянул, а для того, чтобы понять, одобрил ли клиент проблему, то есть часть favorites.userid AS favorited
.
Я попытался сделать следующее: (все сразу, я помещаю это в маркированную форму для удобства чтения)
- дублирование существующего
LEFT JOIN favorites
и удаление проверки идентификатора пользователя из дубликата
- добавление
, COUNT(favorites.ticketid) AS favoritescount
в раздел SELECT
- добавление
AS favorited
к исходному LEFT JOIN
, а также изменение favorites.userid
на favorited.userid
С этой попыткой мой запрос возвращает только одну строку.