#php #mysql
#php #mysql
Вопрос:
У меня есть таблица, в которой ведется учет голосов
Условие
-
Ответ может иметь много голосов;
-
Пользователь может проголосовать один раз за определенный идентификатор ответа.
таблица:
reply_vote
---- ------------- ------------- | id | reply_id | userID | ---- ------------- ---- -------- | 1 | 23 | 21 | | 3 | 33 | 21 | | 4 | 23 | 25 | | 5 | 23 | 12 |
Я хочу отобразить общее количество голосов по каждому ответу
например,g
reply_id 23 имеет 3 голоса с идентификатором пользователя (21,25,12)
reply_id 33 имеет 1 голос с идентификатором пользователя (21)
Я не хочу извлекать все данные, используя цикл while в php
до сих пор я использовал приведенный ниже запрос, но он отображает все голоса на странице, а это не то, что требуется
SELECT
reply.id,
reply.reply,
COUNT(reply_vote.id) AS likes
FROM reply
LEFT JOIN reply_vote ON reply_vote.reply_id = reply.id
GROUP BY reply.id
Как я могу это сделать?
Комментарии:
1. Что не так с вашим запросом?
2. я использовал приведенный ниже код для извлечения данных из запроса, который я написал выше, он отображает все данные по каждому ответу в выводе **while ($row = mysqli_fetch_array ($ query)) { echo ‘<h3>’.$row[«ответить»].'</h3>’; // echo ‘<a href=»index.php?type=articleamp;id=’.$row[«id»].'»> Нравится</a>’; echo ‘<p>’.$row[«лайки»].’ Людям это нравится</p>’;} **
3. И что не так с вашим кодом?
4. я хочу создать подсчет голосов, который отображал бы идентификатор eachreply с его голосованием, похожим на facebook likes
5. «Я хочу отобразить общее количество голосов по каждому ответу» — ИМХО, ваш запрос делает именно это.
Ответ №1:
Попробуйте этот код:
SELECT reply.id, reply.reply,
COUNT(reply_vote.id) as likes
FROM reply
INNER JOIN reply_vote ON reply_vote.reply_id = reply.id
GROUP BY reply_vote.reply_id