Подсчет, заставляющий его вернуть один результат

0

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

Я попытался создать запрос на соединение так

$sql = "SELECT U.id AS userid, U.name AS NAME, U.username AS username,
               U.verified AS verified, U.private AS private,
               COUNT(IFOLLOW.user_id) AS i_follow, 
               COUNT(FR.user_id) AS requested 
        FROM posts AS P 
        LEFT JOIN likes AS L ON L.post_id = :postid 
        LEFT JOIN users AS U ON U.id = L.user_id 
        LEFT JOIN followers AS IFOLLOW 
               ON IFOLLOW.user_id = :userid AND IFOLLOW.following_id = U.id 
        LEFT JOIN follow_requests AS FR 
               ON FR.requester = :userid AND FR.user_id = U.id WHERE P.id = :postid";

Я использую COUNT() для подсчета, если пользователь следит/просит следовать за тем, кто просматривает список со списком. Если он говорит 1, это означает, что они следуют/запрашивают их, если 0 нет. Проблема в том, что когда я включаю методы подсчета, он возвращает это как один результат. Когда я не включаю счет, он возвращает несколько, поэтому я могу запустить foreach через все их.

Я делаю что-то неправильно, чтобы сделать все это одним из результатов?

  • 0
    Добавьте GROUP BY U.id, U.name, U.username, U.verified, U.private в конце запроса. См. Предложение GROUP BY для более подробной информации.
Теги:

1 ответ

1
Лучший ответ

Вы должны добавить предложение GROUP BY, если вы хотите агрегировать разделы, а не по всем таблицам. Попробуйте добавить

GROUP BY U.id, U.name, U.username, U.verified, U.private

в конце вашего запроса.

Ещё вопросы

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