SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.10.2015 17:32:10

l_2001
Участник
Зарегистрирован: 02.10.2015
Сообщений: 8

Динамический подсчет данных

Здравствуйте!
Помогите организовать подсчёт данных из таблицы! Пожалуйста!
Есть таблица в которой хранятся данные по id чека. У одного id может быть несколько статусов "Новый", "В работе", "Закрыт"... Вот и нужно в итоговом запросе видеть в каком статусе в данный момент находятся id.
id              status
4380872    Новый
4380872    Закрыто
4380873    Новый
4380873    В работе
4380874    Новый
4380875    Новый
4380876    Новый
4380877    Новый
4380877    В работе
4380878    Новый
4380878    Закрыто
Т.е. в итоге получить, что 4380874, 4380875 - только новые и их 2 шт., 4380872, 4380878 - эти закрыты и их 2 шт., 4380873, 4380877 - эти пока в работе и их 2 шт.
Пытался делать запрос JOIN-ами, но получается жуткий монстр, да ещё и еле-еле работает...
Заранее огромная благодарность откликнувшимся!

Неактивен

 

#2 02.10.2015 17:37:02

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Динамический подсчет данных

А в таблице разве только два поля? Нет поля времени, когда статус был присвоен?
Приведите пример итоговой выборки, которая нужна.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 02.10.2015 22:13:15

l_2001
Участник
Зарегистрирован: 02.10.2015
Сообщений: 8

Re: Динамический подсчет данных

Понимаете, есть там такое поле timestamp, но как оно заполняется - одному Б-гу известно... Порой странные цифры случаются и поэтому я старался к этому полю не цепляться... А всё-же, если я договорюсь с админами о корректном заполнении этого поля, то как быть в этом случае, если оно будет корректным? Я не привязывался к этому полю по той причине, что кассир может быть другим... Скажем - чек в конце раб. дня передаётся другому исполнителю, т.к. первый уже собирается сдавать смену и вновь у него будет статус НОВЫЙ, но уже с другим пользователем, а id остаётся прежним, с чего и началось всё...
Я не слишком путано? У меня голова уже трескается sad

Неактивен

 

#4 03.10.2015 01:29:25

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Динамический подсчет данных

Вы считаете актуальной запись добавленную позднее, но с точки зрения сервера представленные две записи равноправны - он не знает какая добавлена позднее.
id              status
4380872    Новый
4380872    Закрыто

Должно быть поле, которое позволит определить какая из двух представленных записей актуальна.

Например, это может быть поле, в котором указано время присвоения статуса, тогда актуальная запись это запись с большим временем. Или есть поле с атрибутом auto_increment, тогда актуальная запись с большим значением.
Если такое поле есть, то тут указано несколько способов.

Неактивен

 

#5 03.10.2015 01:33:14

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Динамический подсчет данных

l_2001 написал:

Понимаете, есть там такое поле timestamp, но как оно заполняется - одному Б-гу известно...

Посмотрите

show create table `имя таблицы`;
 

Неактивен

 

#6 03.10.2015 10:16:39

l_2001
Участник
Зарегистрирован: 02.10.2015
Сообщений: 8

Re: Динамический подсчет данных

Посмотрите

show create table `имя таблицы`;
 

Здравствуйте!
Я почитаю ссылку, которую Вы дали выше... А в отношении самой таблицы, я прикрепил файлик, в котором видна основная часть... Да, изменению статуса чека соответствует и изменение времени в поле timestampAdd...
Сегодня попробую разобраться с группировкой...
Ещё раз - спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson