Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите новичку / 5 сообщений из 5, страница 1 из 1
07.08.2014, 18:59
    #38715361
Амурский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку
Народ подскажите как мне вывести информацию
существует таблица врачей с информацией о принятых пациентах за каждый день, и с разной консультацией, за каждую консультацию он берет денежку.
мне нужно вывести всех врачей которые принимали пациентов в разрезе даты, количество консультации за этот день и сумма за консультацию

как должна выглядеть информация
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Врач: Иванов
Дата: Июль 2014
--------------------|-----------------------|-----------------------|----------------------|
                    |     Консультация1     |     Консультация2     |     Консультация3    |
   дата             |-----------------------|-----------------------|----------------------|
                    | сумма    | количество | сумма    | количество | сумма   | количество |
--------------------|-----------------------|-----------------------|----------------------|
01.07.2014          |     20   |      2     |      50  |       5    |    0    |       0    |
--------------------|-----------------------|-----------------------|----------------------|
02.07.2014          |     10   |      1     |      100 |       10   |     500 |     1      |
--------------------|-----------------------|-----------------------|----------------------|
и т.д.




в таблице много врачей поэтому я выбираю по одному и вывожу информацию следующим образом:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
$data=$_POST['value']; //Получаю дату из <form action>
list($year, $mounth, $day) = split('[/.-]', $data);//разбиваю введенную дату на день месяц год

$sql = "SELECT DISTINCT айди_таблицы, фамилия_врача 
FROM таблица_обращений 
WHERE таблица_обращений.дата_обращения BETWEEN '2014-07-01 01:00:00' and '2014-08-01 01:00:00' 
and (вид_консультации=Консультация1 or вид_консультации=Консультация2 or вид_консультации=Консультация3) 
group by айди_таблицы"; //

$result = mysql_query($sql, $db);

while ($row = mysql_fetch_array($result)){   
echo " Врач: ".$row['фамилия_врача']."
Дата: ";
switch ($mounth) { // Делаю обработку для вывода даты прописью
case 01:echo 'Январь';break;
case 02:echo 'Февраль';break;
case 03:echo 'Март';break;
case 04:echo 'Апрель';break;
case 05:echo 'Май';break;
case 06:echo 'Июнь';break;
case 07:echo 'Июль';break;
case '08':echo 'Август';break;
case '09':echo 'Сентябрь';break;
case 10:echo 'Октябрь';break;
case 11:echo 'Ноябрь';break;
case 12:echo 'Декабрь';break;
default:
	echo "ОШИБКА!!! НЕКОРРЕКТНО ВВЕДЕНА ДАТА";

}
switch($year){
case 2014:echo " 2014";break;
case 2015:echo " 2015";break;
case 2016:echo " 2016";break;
}
//Таблица куда будут вставляться данные
echo "<table align='center' class='table' cellspacing='1' cellpadding='1' width='90%' border='1'>
<tr>
<td rowspan='2'>Дата</td>
<td colspan='2'>Консультация1</td>
<td colspan='2'>Консультация2</td>
<td colspan='2'>Консультация3</td>
</tr>
<tr>
<td>сумма, руб.</td>
<td>количество, чел.</td>
<td>сумма, руб.</td>
<td>количество, чел.</td>
<td>сумма, руб.</td>
<td>количество, чел.</td>
</tr>
";
// Выясняю сколько дней в выбранном месяце для отображения
for($i = 0; $i <= date("t",strtotime($data))-1; $i++){

//Запоминаем полученную дату из формы <form action>
$start_date=$data;

//Вывожу дату ввиде 01.07.2014
$days=date('d.m.Y', strtotime($start_date.'+'.$i.' day'));

//Делаю переменные для запроса по каждому дню
$days_query_1=date('Y-m-d 01:00:00', strtotime($days));
$days_query_2=date('Y-m-d 01:00:00', strtotime($days.' + 1 day'));

//Заполняю столбец датой выбранной для отображения
echo "<tr><td>$days</td>";

//Запрос на вывод консультации по каждой в отдельности
$sql_Консультация1="SELECT COUNT(айди_таблицы) AS количество, SUM(summ) AS сумма 
FROM таблица_обращений 
WHERE trc_id=".$row['фамилия_врача']." and дата_обращения BETWEEN '".$days_query_1."' and '".$days_query_2."'  
and вид_консультации=Консультация1";

$sql_Консультация2="SELECT COUNT(айди_таблицы) AS количество, SUM(summ) AS сумма 
FROM таблица_обращений 
WHERE trc_id=".$row['фамилия_врача']." and дата_обращения BETWEEN '".$days_query_1."' and '".$days_query_2."'  
and вид_консультации=Консультация2";

$sql_Консультация3="SELECT COUNT(айди_таблицы) AS количество, SUM(summ) AS сумма 
FROM таблица_обращений 
WHERE trc_id=".$row['фамилия_врача']." and дата_обращения BETWEEN '".$days_query_1."' and '".$days_query_2."'  
and вид_консультации=Консультация3";
//
$result_Консультация1 = mysql_query($sql_Консультация1, $db);
$result_Консультация2 = mysql_query($sql_Консультации2, $db);
$result_Консультация3 = mysql_query($sql_Консультация3, $db);

---------------------------------------------------------------------------------------------------
КАК МНЕ ТУТ ВЫВЕСТИ ДАННЫЕ И ПОДСТАВИТЬ В КАЖДЫЙ ДЕНЬ 
что бы привести к желаемому виду
echo "</tr>"; 
}
echo "</table>";



Ребята подскажите :)
...
Рейтинг: 0 / 0
08.08.2014, 02:07
    #38715554
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку
Амурский,

1) Обьединить SQL запросы в один (hint - GROUP BY). Это что - Access? Пропуски дат учитывать нужно - (т.е.) пустые строки колонки в таблице нужны?
2) swith по месяцам - чем не устроил массив + проверка корректности индекса?
3) switch по году - не нужен, и так все напечатается

P.S. Насчет шаблонов - не парся ;) Все с этого начинали. Но на заметочку возьми функции в районе sprintf().
...
Рейтинг: 0 / 0
09.08.2014, 00:02
    #38716434
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку
Оффтоп, но я считаю, что русский язык в SQL у Амурского смотрится отлично.
...
Рейтинг: 0 / 0
09.08.2014, 12:42
    #38716504
Програмёр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку
Амурский,

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

Не понятна мне например суть поля айди_таблицы.

В первом запросе GROUP by стоит сделать также по "дата_обращения" и "вид_консультации";
ORDER by `айди_таблицы`, `фамилия_врача`, `дата_обращения`, `вид_консультации`;
убрать distinct;
В SELECT добавить поля вид_консультации, COUNT(*) as `количество`, SUM(summ) AS сумма

Получим все данные одним запросом в удобном виде, после чего запускаем
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
$lastDoctor = "";
$visitDate = "";
while ($row = mysql_fetch_array($result)){
  if($visitDate!=$row["дата_обращения"] && $visitDate!="") echo "</tr>"; //разорвал закрытие и открытие tr из-за того
  //что закрывать обязаны строго до конца таблицы (если tr последний), а открывать после начала следующей таблицы
  if($lastDoctor!=$row["фамилия_врача"]){
    //выводим фамилию врача
    if($lastDoctor!="") echo "</table>";
    echo "<table>";
    $lastDoctor=$row["фамилия_врача"];
  }
  if($visitDate!=$row["дата_обращения"]){
    echo "<tr><td>".$row["дата_обращения"]."</td>";
    $visitDate=$row["дата_обращения"];
  }
  echo "<td>".$row["количество"]."</td><td>".$row["сумма"]."</td>";
}
echo "</tr></table>;



что-то типа такого должно работать :)
...
Рейтинг: 0 / 0
11.08.2014, 09:17
    #38716969
Амурский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите новичку
Програмёр,

Спасибо за совет )))
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Помогите новичку / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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