powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Множественная выборка с подсчетом и DISTINCT
8 сообщений из 8, страница 1 из 1
Множественная выборка с подсчетом и DISTINCT
    #39387918
bukreevlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Есть таблица cо строками (все лишние столбцы и прочее убрал):

Код: php
1.
2.
3.
4.
5.
6.
7.
consultant => 000010, read => 0
consultant => 000010, read => 0
consultant => 000010, read => 0
consultant => 000010, read => 1
consultant => 000011, read => 1
consultant => 000019, read => 0
consultant => 000034, read => 1



Как получить все уникальные: consultant я знаю.
Код: sql
1.
$query = $dbh->query("SELECT DISTINCT consultant FROM Messages;");



А как подсчитать их количество и получить все уникальные consultant с read = 0 ?
Нужно получить ответ от запроса:

Код: php
1.
2.
consultant => 000010 (3)
consultant => 000019 (1)



Что бы через foreach прогнать полученные данные и получить массив в виде:

Код: php
1.
2.
000010 => 3
000019 => 1



Код: php
1.
2.
3.
4.
5.
6.
$consultant = $query->fetchAll();					
if (count($consultant) > 0) {
    foreach ($consultant as $row) {
        ... тут я тоже напишу код
    }
}



Проект остановился на 2466 строке, дальше не могу из за этого.
...
Рейтинг: 0 / 0
Множественная выборка с подсчетом и DISTINCT
    #39387922
bukreevlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного подправлю..
Как получить все уникальные: consultant с read = 0 я знаю.
Код: sql
1.
$query = $dbh->query("SELECT DISTINCT consultant FROM Messages WHERE read = '0';");
...
Рейтинг: 0 / 0
Множественная выборка с подсчетом и DISTINCT
    #39387929
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай букварь про конструкцию GROUP BY и агрегирующие функции.
...
Рейтинг: 0 / 0
Множественная выборка с подсчетом и DISTINCT
    #39387933
bukreevlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

Ох.. как это тяжко )) ладно.. попробую что-то найти.. Спасибо за подсказку!
Просто, может хоть какой-то малый код запроса в одну строчку привести сможешь ? А я от него оттолкнусь ?
...
Рейтинг: 0 / 0
Множественная выборка с подсчетом и DISTINCT
    #39387935
bukreevlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl,

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

Источник
...
Рейтинг: 0 / 0
Множественная выборка с подсчетом и DISTINCT
    #39388657
bukreevlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl, Я целый день смотрел и изучал:

Примерная таблица:
Код: php
1.
2.
3.
4.
5.
6.
7.
consultant => 000010, read => 0
consultant => 000010, read => 0
consultant => 000010, read => 0
consultant => 000010, read => 1
consultant => 000011, read => 1
consultant => 000019, read => 0
consultant => 000034, read => 1



Данный запрос выводит то, что мне нужно! Он считает общее количество каждого consultant и выводит их количество с параметром read=0 ,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT T1.consultant, T1.count, T2.unread
FROM
  (SELECT consultant, COUNT(consultant) AS count
   FROM Messages GROUP BY consultant) T1,
   
  (SELECT consultant, COUNT(consultant) AS unread
   FROM Messages WHERE read = '0' GROUP BY consultant) T2
WHERE T1.consultant = T2.consultant;



Получил ответ:
Код: php
1.
2.
consultant => 000010, count => 4, unread => 3
consultant => 000019, count => 1, unread => 1



Но подправь меня, он не выводит все consultant , то-есть, те которые с read=1 не выводит.. помоги.. 300р на телефон брошу!

Ответ должен быть такой:
Код: php
1.
2.
3.
4.
consultant => 000010, count => 4, unread => 3
consultant => 000011, count => 1, unread => 0
consultant => 000019, count => 1, unread => 1
consultant => 000034, count => 1, unread => 0
...
Рейтинг: 0 / 0
Множественная выборка с подсчетом и DISTINCT
    #39388749
bukreevlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение найдено!

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
    T1.consultant, count(T1.consultant) AS count, T2.unread
FROM 
    Messages T1
LEFT JOIN 
    (SELECT consultant, count(*) AS unread  FROM Messages WHERE read = '0' GROUP BY consultant) T2
ON 
    T1.consultant = T2.consultant
GROUP BY 
    T1.consultant
...
Рейтинг: 0 / 0
Множественная выборка с подсчетом и DISTINCT
    #39388752
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитай это: http://www.sql.ru/forum/983207/kak-prosit-pomoshhi-s-zaprosom
Там-же есть ссылка на букварь который надо читать, а не странные странички с вырви-глазным дизайном.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Множественная выборка с подсчетом и DISTINCT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]