Правильный запрос mysql функцией COUNT

localghost

Новичок
Пытаюсь вывести ежедневные приёмы врачей из таблицы priem. Выборка должна быть по ежедневной дате, т.е. сколько пациентов принимал каждый врач каждый день:

PHP:
$result2 = mysqli_query($con,"SELECT prdate, fio, doctor_uid ,  COUNT(*) FROM priem WHERE doctor_uid=$uidforfaq GROUP BY prdate ;") or die("<p>Не удается выбрать запись из базы данных</p>". mysqli_error($con));
Здесь prdate - столбец с датой приёма, fio - ФИО пациента, doctor_uid - уникальный идентификатор каждого врача. исходя из вышеуказанного запроса таким образом вывожу например ФИО пациента
PHP:
<?php echo (" ".$row2["fio"]." "); ?>
Но почему то он показывает только один приём за каждую дату. Например 14.06.2017 года врач принял 2 пациентов а он выводит ФИО только одного пациента...где я делаю неправильно или что ещё добавить чтоб реализовать задумку
 

Prolix

Новичок
Так "каждый врач каждый день" или всё-таки конкретный врач?
У вас в запросе идёт условие для конкретного doctor_uid.
 

Фанат

oncle terrible
Команда форума
Надо определиться: запрашивать либо пациентов, либо их количество.
В данном случае явно нужно первое. Поэтому выкинуть COUNT и GROUP BY и сделать простой запрос с WHERE ...ORDER BY

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

PHP:
$stmt = $pdo->prepare("SELECT prdate, fio, doctor_uid FROM priem WHERE doctor_uid=? ORDER BY prdate");
$stmt->execute([$uidforfaq]);
$result = $stmt->fetchAll(PDO::FETCH_GROUP);
 

localghost

Новичок
Так "каждый врач каждый день" или всё-таки конкретный врач?
У вас в запросе идёт условие для конкретного doctor_uid.
Прошу прощения опечаточка вышла да для конкретного врача

Надо определиться: запрашивать либо пациентов, либо их количество.
Дело в том что я вывожу данные из базы внутри раскрывающей панели т е заголовок панели это дата а тело панели это ФИО пациентов. Хотелось бы например показал дату один раз я рядом цифра количество приёмов за эту дату. А при раскрывании списка показывает имена пришедших 2 пациентов за сегодня. Невозможно так или посоветуете сделать 2 отедльных запроса ?

Привожу полный код этого "участка" страницы

PHP:
<?php
$id2=$_GET['id'];
$result2 = mysqli_query($con,"SELECT prdate, fio, doctor_uid, num,diagnoz ,  COUNT(*) FROM priem WHERE doctor_uid=$uidforfaq GROUP BY prdate, fio,  num,diagnoz ;")  or
die("<p>Не удается выбрать запись из базы данных</p>". mysqli_error($con));?><?php    while($row2 = mysqli_fetch_assoc($result2 )) { ?>
                                    <div class="faq-item">
                                        <div class="faq-title"><span class="fa fa-angle-down"></span><?php echo (" ".$row2["prdate"]." "); ?></div>
                                        <div class="faq-text">
                                            <h5><?php echo (" ".$row2["fio"]." "); ?></h5>
                                            
                                        </div>
                                    </div>
                                    <?php }; ?>
 

Фанат

oncle terrible
Команда форума
Ну тогда руками считай пациентов за каждый день, тоже не бином ньютона.
Сначала посчитал, потом вывел.
Делаешь запрос и собираешь данные в двумерный массив, индексами которого являются даты.
Хотя это для тебя наверное абракадабра и сейчас ты спросишь что такое двумерный массив.

Да, и скажу тебе по секрету. Вот этот код, пример которого ты привел выше, называется не "система", а "белье куртизанки после бурно проведенной ночи".
ПХП учил по видеоурокам?
 

localghost

Новичок
Сначала посчитал, потом вывел.
Делаешь запрос и собираешь данные в двумерный массив, индексами которого являются даты.
Хотя это для тебя наверное абракадабра и сейчас ты спросишь что такое двумерный массив.
Хорошо за совет спасибо

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

Фанат

oncle terrible
Команда форума
Программисты в бога не верят. Интеллект не позволяет.
 
  • Like
Реакции: AmdY

Prolix

Новичок
заголовок панели это дата а тело панели это ФИО пациентов
Тогда не нужен вообще никакой count(*) внутри запроса и group by тоже не нужен.
В PHP есть же mysqli_num_rows. Вот им и пользуйтесь для количества записей. А вывод записей - обыкновенный select по doctor_uid.
 

localghost

Новичок
И чем же тебе здесь mysqli_num_rows помог, родной?
PHP:
<?php
$result100 = mysqli_query($con,"SELECT  prdate, COUNT(*) FROM priem WHERE doctor_uid=$uidforfaq GROUP BY  prdate ;")  or
die("<p>Не удается выбрать запись из базы данных</p>". mysqli_error($con));
$rowcount2 = mysqli_num_rows($result100);
Родной ???? В Бога начал верить чтоли , Фанат ? Добрым стал в д р у г
 

Фанат

oncle terrible
Команда форума
А теперь попробуй угадать, что именно ты получил и зачем оно тебе нужно.
 
Сверху