|
|
|
| Привет всем
Не знаю как назвать тему поэтому так
Дело в следующем: есть две таблицы в одной содержиться количество распечатанных листов и дата, время когда был произведен подсчет (восточный формат) и forign key от второй Во второй данные по принтерам (названия) В первой forign key от принтеров конечно повторяются (разное время подсчета)
Нужно для каждого одного принтера подсчитать сколько он распечатал не только за весь период но и за сколько времени (в общем). И вывести в таблице как от и до (даты), общее время и количество распечатанных листов в общем.
Горю не могу и не знаю как. В php-mysql-sql не так давно и знаний не так много
Подскажите хобя бы в каком направлении искать или бросьте ссылки
Заранее спасибо
В общем выглядит так:
table 1
3 ...... 345....... 2007-06-01
2 ...... 3678 .... 2007-06-03
3 ....... 438........ 2007-06-05
2.........4875 ......2007-06-07
table 2
3 ..... printer 1
2 ----printer 2
То есть вычесть 438 и 345 и сказать что за период с 2007-06-01 по 2007-06-05 и что за 5 дней было распечатано 97 листов
и так же для второго | |
|
|
|
|
|
|
|
для: lenbb
(08.06.2007 в 11:05)
| | может чтото вроде этого:
SELECT table2.имяПринтера, count(table1.Страниц), min(table1.Дата), max(table1.Дата)
FROM table1 LEFT JOIN table2 ON table1.IDПринтера=table2.IDПринтера
GROUP BY table1.IDПринтера
|
Если надо будет узнавать тоже самое, но в определенный срок, скажем с 2007-06-01 по 2007-06-04, нужно будет добавить условие отбора по дате типа:
WHERE table1.Дата>ДатаНачала and table1.Дата<ДатаКонца
|
| |
|
|
|
|
|
|
|
для: Gust
(08.06.2007 в 12:14)
| | Буду пробовать Спасибо! | |
|
|
|
|
|
|
|
для: Gust
(08.06.2007 в 12:14)
| | ваш запррос вытащит для каждого принтера
его имя,
число снятых отчетов,
дату первого отчета,
дату последнего отчета.
при наличии WHERE - то же самое, но на интервале времени. | |
|
|
|
|
|
|
|
для: lenbb
(08.06.2007 в 11:05)
| | есть ли у таблицы первичный auto_increment - ключ?
Весьма желательно привести полную структуру. | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2007 в 12:22)
| | Про разрывы не совсем понял Если про дату то нет нету Просто из последней даты вычесть первую и сказать что за такой то период распечатано столько то
Да первичный есть у обоих - авто Но первичный от table2 используется в table1 как вторичный
Полную не совсем могу На самом деле структура такая как описал Она конечно больше но остальное относится к другому | |
|
|
|
|
|
|
|
для: lenbb
(08.06.2007 в 12:47)
| | Всё было бы куда проще, если бы была еще одна колонка с непрерывной нумерацией отчетов, независимо по каждому принтеру.... | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2007 в 13:19)
| | Возможно, я не знаю Базу делал не я И переделывать навряд-ли кто-то будет да и время на это уже нет Есть то что есть | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2007 в 13:19)
| | А так будет довольно громоздко.
SELECT
printers.printername,
rep.printer_id,
prv.dt AS dt_from,
rep.dt AS dt_to,
to_days( rep.dt ) - to_days( prv.dt ) AS days,
rep.pages - prv.pages AS pages
FROM reports AS rep
JOIN (
SELECT next.printer_id, next.dt, max( prev.dt ) AS pdt
FROM reports AS next
JOIN reports AS prev ON next.printer_id = prev.printer_id AND next.dt > prev.dt
GROUP BY next.printer_id, next.dt
) AS np ON rep.printer_id = np.printer_id AND rep.dt = np.dt
JOIN reports AS prv ON np.printer_id = prv.printer_id AND np.pdt = prv.dt
LEFT JOIN printers ON rep.printer_id = printers.id_printer
|
| |
|
|
|
|
|
|
|
для: Trianon
(08.06.2007 в 13:35)
| |
printername printer_id dt_from dt_to days pages
HP LJ 4200 3 2007-06-01 2007-06-05 4 93
Ricoh Aficio 1015 2 2007-06-03 2007-06-07 4 1197
|
| |
|
|
|
|
|
|
|
для: Trianon
(08.06.2007 в 13:40)
| | Круто Нет Слов Спасибо!! | |
|
|
|
|
|
|
|
для: Trianon
(08.06.2007 в 13:40)
| | А-а Круто-то круто Только мне самому здесь не разобраться Если у тебя выпадет свободная минутка (вдруг такое случится) мог бы мне пожалуйста объяснить что да как Как работает А самому мне это не по силам понять | |
|
|
|