Запрос, сортировка данных по максимальному колличеству

e-orel

Новичок
Запрос, сортировка данных по максимальному колличеству

Здравствуйте..
Ситуация следующая... провозился весь день...
есть таблица с данными.

id_top id_mp3 date_dow
1 11 1184180679
2 9 1184181461
3 7 1184181465
4 7 1184181467
5 7 1184181470
6 11 1184181473
7 13 1184181476
8 13 1184181478
9 9 1184182280
10 7 1184182325
11 14 1184183494
12 14 1184183678
13 14 1184183769
14 6 1184184121

Необходимо составить следующий запрос что бы данные сортировались так... сперва идёт сортировка по дате а потом выводил сперва те значения которых максимальное колличество (id_mp3)... тоесть каких id_mp3 больше такие выводить первыми и потом по убыванию...

$date_now=mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$query="SELECT * FROM top WHERE date_dow>'$date_now' ......... ";


Заранее спасибо!!
 

Bitterman

Новичок
Не понял, что ты хочешь получить. Напиши результат, который бы ты хотел получить из данных, приведенных в первом посте.
 

Vin-Diesel

Новичок
SELECT * FROM top WHERE date_dow > ADDDATE(NOW(), INTERVAL -1 MONTH) ORDER BY date_dow DESC, id_mp3 DESC;

Насколько я понял, но может так вам надо?

SELECT * FROM top WHERE date_dow > ADDDATE(NOW(), INTERVAL -1 MONTH) ORDER BY id_mp3 DESC;

полю date_dow поменять тип на datetime

Счет Я.Деньги: 41001133886944
 

e-orel

Новичок
Нужно получить данные вот в таком виде если выводим id_mp3

7
14
11
9 и т.д тоесть семёрок самое большое их в первый ряд и т.д

-~{}~ 12.07.07 15:52:

сортировка по дате меня не интересует... а интересует сортировка по максимальному колличеству записей.... вот самое большое записей с id_mp3 == 7 вот сперва его выводим потом по убыванию...
 

Vin-Diesel

Новичок
Жду денег
SELECT * FROM top GROUP BY id_mp3 HAVING date_dow > ADDDATE(NOW(), INTERVAL -1 MONTH) ORDER BY COUNT(id_mp3) DESC;

-~{}~ 12.07.07 22:03:

P.S. проверил у себя:)
 

Bitterman

Новичок
e-orel
SELECT COUNT(id_mp3) as mp3_num, id_mp3 FROM top ORDER BY mp3_num DESC
А так?

Vin-Diesel
Побираться иди в форум Работа...
 

Vin-Diesel

Новичок
Структуру таблицы выложи

-~{}~ 12.07.07 22:36:

Bitterman
не так, потому что нужно сортировать по количеству одинаковых записей в столбце

-~{}~ 12.07.07 22:42:

Вот я с этой проверял.
CREATE TABLE "top" (
"id_top" int(11) NOT NULL,
"id_mp3" int(11) NOT NULL,
"date_dow" datetime default NULL,
PRIMARY KEY ("id_top")
) AUTO_INCREMENT=8 ;
Данные
INSERT INTO `top` (`id_top`, `id_mp3`, `date_dow`) VALUES
(1, 11, '2007-07-11 21:21:49'),
(2, 9, '2007-05-07 21:21:53'),
(3, 1223, '2007-07-10 21:23:00'),
(4, 11, '2007-07-14 21:27:18'),
(5, 10, '2007-07-14 21:27:55'),
(6, 11, '2007-07-10 21:59:06'),
(7, 1223, '2007-07-16 21:59:13');

-~{}~ 12.07.07 22:47:

Если у тебя формат даты в типе int используем этот код:
PHP:
$sql ="SELECT * FROM top GROUP BY id_mp3 HAVING date_dow > ".strtotime("now - 1 month")." ORDER BY COUNT(id_mp3) DESC;";
 

Апельсин

Оранжевое создание
e-orel, вы думаете тут люди телепаты чтобы догадаться какую ошибку вам выдает MySQL?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
e-orel
Не работают примеры мускул ошибку выдаёт!
http://phpfaq.ru/debug#short

Необходимо составить следующий запрос что бы данные сортировались так... сперва идёт сортировка по дате а потом выводил сперва те значения которых максимальное колличество (id_mp3)... тоесть каких id_mp3 больше такие выводить первыми и потом по убыванию...
http://www.mysql.ru/docs/man/Group_by_functions.html
 

e-orel

Новичок
SELECT *
FROM top
GROUP BY id_mp3
HAVING WHERE date_dow > '1181678400'
ORDER BY COUNT( id_mp3 ) DESC
LIMIT 0 , 30

Ответ MySQL:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE date_dow > '1181678400' ORDER BY COUNT( id_mp3 ) DESC
LI

-~{}~ 13.07.07 13:01:

Ошибка
SQL-запрос:

SELECT count( id_mp3 ) AS mp3_num, id_mp3
FROM top
WHERE date_dow > '1181678400'
GROUP BY mp3_num DESC
LIMIT 0 , 30

Ответ MySQL:

#1056 - Can't group on 'mp3_num'


Вот запрос в чем тут ощибка то? почему мускул ругается ?
 

alpine

Новичок
Vin-Diesel
Bitterman
Товарищи вы издеваетесь?! :D
e-orel
Ты мануал по SELECT пробовал читать?
 

Vin-Diesel

Новичок
Mr_Max
Ты думаеш ему делать нечего:
Необходимо составить следующий запрос что бы данные сортировались так...
Это выглядит как задание, ладно бы написал подскажите куда копать:)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Vin-Diesel
Ну так - носом в Мануал и
ДАСВИДАНИЯ
(с) Киркоров.
 

alpine

Новичок
Vin-Diesel
Ты себе хорошо представляешь как твой запрос с хевингом работает?
Судя по
Нужно получить данные вот в таком виде если выводим id_mp3

7
14
11
9 и т.д тоесть семёрок самое большое их в первый ряд и т.д
ему нужен банальный запрос с COUNT(*) ... WHERE ... GROUP BY ... ORDER BY
 
Сверху