powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите отсортировать по ASC
13 сообщений из 13, страница 1 из 1
Помогите отсортировать по ASC
    #39032909
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сабж
Код: sql
1.
2.
3.
4.
SELECT item.* FROM item, time 
WHERE item.id = time.id
GROUP BY item.id 
ORDER BY time.time ASC

сортируется по DESC. Подскажите как правильно отсортировать
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39032957
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не верю.
Да и сам запрос "ниачём"... нахрена тут группировка?
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39032987
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНе верю.
Да и сам запрос "ниачём"... нахрена тут группировка?
такое бывает, GROUP - группирует в произвольном порядке,
таблица item хранить id (уникальное значение) и название события, а time id(неуник) и time события, т.е. в таблице time может быть много записей с одинаковым айди
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39033005
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monroAkinaсам запрос "ниачём"... нахрена тут группировка?
такое бывает, GROUP - группирует в произвольном порядке,
таблица item хранить id (уникальное значение) и название события, а time id(неуник) и time события, т.е. в таблице time может быть много записей с одинаковым айди
Если бы ты написал SELECT item.id - тебя бы поняли, и это было бы правильно. А вот SELECT item.* - это БСК, как с твоими замечаниями, так и без них.
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39033007
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но всё равно мы отклонились от темы. Продемонстрируй файт, что сортировка неправильна - цитатой с консоли или хотя бы дампом таблиц для попытки воспроизведения.
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39033038
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaНо всё равно мы отклонились от темы. Продемонстрируй файт, что сортировка неправильна - цитатой с консоли или хотя бы дампом таблиц для попытки воспроизведения.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
CREATE TABLE IF NOT EXISTS `time` (
  `id` int(14) NOT NULL DEFAULT '0',
  `time` int(14) DEFAULT NULL,
  KEY `expire` (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
INSERT INTO `time` (`id`, `time`) VALUES
(2522, 1440048120),
(1292, 1446144600),
(1292, 1441389600),
(1292, 1439993400),
(2522, 1439907660),
(1292, 1439787600),
(2522, 1439615100),
(1292, 1439272380);

CREATE TABLE IF NOT EXISTS `item` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=7000 ;

INSERT INTO `item` (`id`, `title`) VALUES
(1292, 'Русь'),
(2522, 'Аyyy')
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39033102
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил через
Код: sql
1.
2.
3.
4.
SELECT item.*, MIN( time.time ) FROM item, time 
WHERE item.id = time.id
GROUP BY item.id 
ORDER BY MIN( time.time ) ASC


может есть лучше решения
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39033104
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
monro,
правильно сортирует. На ваших данных запрос
Код: sql
1.
2.
3.
4.
SELECT item.*, time.time FROM item, time 
WHERE item.id = time.id
GROUP BY item.id 
ORDER BY time.time ASC

возвращает
Код: plaintext
1.
2.
3.
4.
5.
6.
+------+----------+------------+
| id   | title    | time       |
+------+----------+------------+
| 2522 | Аyyy     | 1440048120 |
| 1292 | Русь     | 1446144600 |
+------+----------+------------+
2 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39033150
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monro

Решение с использованием MIN - частично правильное. Частично - потому что всё равно присутствуют поля, не используемые ни в выражении группировки, ни в групповой функции. Правильное - потому что значение такого поля совпадает во всех записях группы.

Почему не работает исходный запрос, почему он неверен?
Если поле не входит в выражение группировки и не является аргументом групповой функции, для него в выходной набор включается одно любое (случайное) значение из всех значений для группы. Это описано в документации (я понимаю, читать её - не наш метод, но тем не менее). То есть в примере для time.id=2522, например, имеется три разных значения time.time. Какое из них попадёт в выходной набор и, соответственно, будет использоваться при сортировке - рандом ведает. Посему исходный запрос иногда будет давать верную сортировку, иногда нет.
Использование же функции MIN снимает эту неоднозначность. Пусть значений три, но минимальное из них - одно, причём всегда одно и то же.
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39033374
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monroПодскажите как правильно отсортировать
FAQ: Выборка первой/последней записи в группах
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помогите отсортировать по ASC
    #39374070
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina monro

Решение с использованием MIN - частично правильное.
Покажите пример полностью правильного решения
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39374254
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
monroРешил через
Код: sql
1.
2.
3.
4.
SELECT item.*, MIN( time.time ) FROM item, time 
WHERE item.id = time.id
GROUP BY item.id 
ORDER BY MIN( time.time ) ASC


может есть лучше решения

лучшее решение изложено в книге М Грабера Введение в SQL.
...
Рейтинг: 0 / 0
Помогите отсортировать по ASC
    #39374296
monro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivлучшее решение изложено в книге М Грабера Введение в SQL.
На какой странице данной книги изложено лучшее решение моего вопроса? Можешь еще поумничать, написать что лучшее решение можно найти через гугл.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите отсортировать по ASC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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