Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: группировка GROUP BY MONTH из двух таблиц
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
Не знаю как решить, вроде уже все перепробовал, суть проблемы:
имеются 3 таблицы, с одинаковыми полями, в которых записывается дата в unixtime, нужно сделать выборку из этих таблиц, и сгруппировать все данные по месяцам. выборку делаю через UNION, но у меня они группируются таблица от таблицы отдельно, а мне необходимо чтобы все данные группировались. Вот мой код
----- То что программа работает, не означает что она написана правильно!
EuGen
Отправлено: 16 Августа, 2012 - 13:14:46
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
KingStar пишет:
GROUP BY MONTH(FROM_UNIXTIME(datetime, '%Y-%m-%d %H:%i:%s'))
Для чего такая конструкция? Обычный MONTH вполне подойдет.
Далее, какой смысл в GROUP BY, если нет ни одной группирующей функции?
Как пример в один запрос (с подсчетом в COUNT):
В добавок, не стоит называть поля в стиле `datetime` - это название типа данных и при определенных условиях можно получить неожиданные результаты. Ну и, наконец, комбинация GROUP BY + ORDER BY не приводит к сортировке по исходному полю, так как сначала формируются группы.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
KingStar
Отправлено: 16 Августа, 2012 - 13:26:18
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
EuGen пишет:
Для чего такая конструкция? Обычный MONTH вполне подойдет
потому что дата хранится в unix-формате
EuGen пишет:
В добавок, не стоит называть поля в стиле `datetime`
с полями и таблицами все впаряде, я здесь их так обозвал, сейчас буду пробовать твой вариант
----- То что программа работает, не означает что она написана правильно!
EuGen
Отправлено: 16 Августа, 2012 - 13:29:33
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
KingStar пишет:
потому что дата хранится в unix-формате
MONTH применимо к типу TIMESTAMP и вернет корректный результат.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
KingStar
Отправлено: 16 Августа, 2012 - 13:38:24
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
DATETIME хранит в формате 'YYYY-MM-DD HH:MM:SS'
DATE хранит в формате 'YYYY-MM-DD'
я ошибаюсь??? в моем случае дата сохраняется как time (Добавление)
можно было конечно сохранять в этот тип таблицы, я сохраняю в int
----- То что программа работает, не означает что она написана правильно!
EuGen
Отправлено: 16 Августа, 2012 - 13:43:11
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Разумеется, все отличия типов можно посмотреть в мануале (хотя бы здесь). Но речь все же о функции. А она работает корректно и с тем, и с другим типом данных.
Или Вы имеете ввиду, что Вы храните данные как INT - тип? Тогда построение понятно. Но непонятен смысл использования INT, гораздо удобнее использовать TIMESTAMP
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
KingStar
Отправлено: 16 Августа, 2012 - 13:52:46
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
EuGen Спасибо за наводку, твоя конструкция сработала, но к сожалению без FROM_UNIXTIME не группирует но все ровно спасибо
----- То что программа работает, не означает что она написана правильно!
EuGen
Отправлено: 16 Августа, 2012 - 13:53:48
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
KingStar пишет:
без FROM_UNIXTIME не группирует
Потому что, как Вы и упомянули выше, Вы используете INT для хранения даты и времени.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
KingStar
Отправлено: 16 Августа, 2012 - 13:55:33
Участник
Покинул форум
Сообщений всего: 1889
Дата рег-ции: Авг. 2011 Откуда: Беларусь
Помог: 69 раз(а)
да, данные хранятся в типе int, как-то стразу так научили, вот в прывычке уже int(10) UNSIGNED
----- То что программа работает, не означает что она написана правильно!
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.