Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день!
Помогите с запросом,
Хочу получить значение кол-ва распечатанных копий(Сумму по каждому принтеру) из таблицы print c такой даты по такую,
Пример:
Выбираем дату с 2016-02-18 по 2016-02-19, выбираем блок, (например `Розничный_бизнес`) и поле Count получаем количество отпечатков, т.е. от Count за 2016-02-19 отнимает значение Count за 2016-02-18. Даты могут выбираться с разным интервалом времени.
Знания заканчиваются на этом месте:
Отредактированно Tera2017 (09.03.2016 19:03:40)
Неактивен
Попробуйте
Неактивен
хочу понять запрос select count(*) -все значения по полу count а где разность? между датами? Или я что не понимаю?
Неактивен
так выбиралась не разница между датами, именно те распечатки, которые были в период между '2016-02-18' and '2016-02-19'.
Если это не то, то приведите маленький пример выборки результирующей, которую Вы хотите получить.
Неактивен
Нужно выбрать Начальную дату и конечную и получить разность по полу Count. Это и будут кол-во отпечатков за сутки. Даты могут быть произвольные. Объяснил как смог
Неактивен
Отредактированно Tera2017 (09.03.2016 19:37:30)
Неактивен
Ребята, есть какие-либо соображения, дайте подсказку
Неактивен
Давайте несколько упростим для начала.
Вот есть у нас таблица t
в которой есть модель (model), дата распечатки (dt)
model dt
epson 2016-01-01
epson 2016-01-01
epson 2016-01-02
xerox 2016-01-01
xerox 2016-01-02
Какой результат Вы хотите получить в запросе?
Неактивен
model dt kol-vo
hp 2016-01-01 5
epson 2016-01-01 5
epson 2016-01-02 6
xerox 2016-01-01 1
xerox 2016-01-02 20
Хочу получить. Находим значение c даты 2016-01-02 по 2016-01-02 т.е. Значение кол-во за 2016-01-02 отнимается значение кол-ва 2016-01-01. Как-то так...
model kol-vo
hp 5
epson 1
xerox 19
Неактивен
Рекомендую все же получить через sql значения kol-vo за конкретные даты, а вычитанием заниматься уже на стороне клиента.
Неактивен
Данный запрос я хочу использовать для написания поиска для php
Неактивен
не верно получается нужно от старшей даты отнимать младшую а здесь считается сумма, это не то. Нужно находить кол-во отпечатков за определенный промежуток в целом.
Неактивен
Сколько данных даёте, то и получается... Я ж не знаю от какой даты нужно какую дату отнимать. Может уже опишете свою задачу действительно понятно ;-) ?
Судя по всему каждый день каждое печатающее устройство печатает сколько-то листов, так?
Что же Вы хотите получить в итоге?
Неактивен
да, каждый день, собираются счетчики по все устройствам и записываются в табличку файл с табличкой выше, выбираюся две даты начальная и конечная дата и от конечной отнимается значение счетчика начальной? Так понятно?
Неактивен
Вроде все понятно, объяснил?
Неактивен
Неактивен
Данный запрос мне необходим чтобы извлекать данные с формы.
Ошибка синтаксиса:
Отредактированно Tera2017 (11.03.2016 07:24:26)
Неактивен
Там одна таблица, просто дважды используется.
SELECT t1.`Count` - t2.`Count`, t1.SNumber
FROM print AS t1, print AS t2
WHERE t1.Snumber = t2.Snumber AND t1.Dprint = '2016-02-19' AND t2.Dprint = '2016-02-18'
GROUP BY t1.Snumber
Нужны индексы на (Dprint) и на (Snumber, Dprint).
Неактивен
SELECT t1.Block AS 'Блок',t1.Unit AS 'Подразделение',t1.Xnumber AS 'Номер Xerox',t1.Model AS 'Модель',t1.SNumber AS 'Серийный номер',t1.`Count` - t2.`Count` AS 'Итого'
FROM print AS t1, print AS t2
WHERE t1.Block = t2.Block and t1.Unit = t2.Unit and t1.Xnumber=t2.Xnumber and t1.Model=t2.Model and t1.Snumber = t2.Snumber AND t1.Dprint = '2016-03-11' AND t2.Dprint = '2016-02-18'
GROUP BY t1.Xnumber;
Неактивен
У Вас могут быть устройства с одинаковым серийником в разных подразделениях?
Неактивен
нет серийники уникальные у каждого аппарата
Неактивен
у меня не получается сгрупперовать по блокам и подразделениям в чем может быть вопрос?
Неактивен
Вы хотите именно сгруппировать или отсортировать по ним?
Неактивен
сгруппировать
Неактивен
SELECT t1.Block AS 'Блок',t1.Unit AS 'Подразделение',t1.Xnumber AS 'Номер Xerox',t1.Model AS 'Модель',t1.SNumber AS 'Серийный номер',SUM(t1.`Count`) - SUM(t2.`Count`) AS 'Итого'
FROM print AS t1, print AS t2
WHERE t1.Block = t2.Block and t1.Unit = t2.Unit and t1.Xnumber=t2.Xnumber and t1.Model=t2.Model and t1.Snumber = t2.Snumber AND t1.Dprint = '2016-03-11' AND t2.Dprint = '2016-02-18'
GROUP BY t1.Block,t1.Unit,t1.Xnumber;
Так?
Неактивен