Как выбрать поля и посчитать для каждого поля в SQL?

У меня есть таблица SQL с именем messages. Я хочу выбрать имена пользователей DISTINCT из таблицы, которые отправляют любое сообщение получателю, у которого есть идентификатор ($ uid), а также выбрать COUNT(message) для каждого отправителя, используя однострочный запрос.

Я пробовал этот код:

$query = "SELECT DISTINCT clientname,user_id,user1pic, COUNT("SELECT id FROM messages WHERE clientname=clientname) AS counted FROM messages WHERE receiver=$uid and status='unread' ";
$messages=mysqli_query($cnx,$query);
while($row=mysqli_fetch_array($cnx,$messages)){

echo '<a class = "example" > '.$row['clieenter code herentname'].''.$row['counted'].'</a>' ;}
if (mysqli_num_rows($cnx,$messages)<=0){
    echo '<a class = "example" href = "#">You Have No Messages</a>' ;
}

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

Tim Biegeleisen 02.07.2018 03:42

Намек: GROUP BY. Также могут помочь выборочные данные и желаемые результаты.

Gordon Linoff 02.07.2018 03:45

@GordonLinoff мне было интересно, есть ли способ подсчитать сообщения каждого отправителя в одной строке запроса

Hassan El khalifte 02.07.2018 03:47

Скорее всего, в этом запросе есть уязвимость, связанная с внедрением SQL-кода - не стоит с этим соглашаться.

halfer 02.07.2018 09:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
349
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуйте следующее:

SELECT 
  clientname,
  user_id,
  user1pic, 
  COUNT(1) AS counted 
FROM 
  messages 
WHERE 
  receiver=:uid 
  and status='unread'
Group by
  clientname,
  user_id,
  user1pic;

Я заменил вашу встроенную переменную PHP на заполнитель параметров - используйте привязку параметров, чтобы избежать SQL-инъекции.

Таааанкс работал,

Hassan El khalifte 02.07.2018 11:57

Другие вопросы по теме