[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как добавить 2-й Order by ?
Strannik
Добрый день.
Код:
SELECT * FROM `projects` AS P LEFT JOIN `project_sequens` AS PS ON P.category=PS.category group by P.category ORDER by PS.num ASC


Мне нужно из таблицы `projects` вывести данные по id Desc, т.е. что- то вроде этого:

SELECT * FROM `projects` AS P LEFT JOIN `project_sequens` AS PS ON P.category=PS.category group by P.category ORDER by PS.num ASC, P.id DESC


В данном случае проблема в том, что срабатывает только ORDER by PS.num ASC, а P.id DESC не работает...

Подскажите почему, и как сделать правильно?



Спустя 8 минут, 45 секунд (17.08.2012 - 18:52) inpost написал(а):
должен срабатывать.

Спустя 42 минуты, 31 секунда (17.08.2012 - 19:35) Krevedko написал(а):
сортирует сначала по первой сортировке, потом как бы внутри нее по второй

Спустя 17 часов, 30 минут, 15 секунд (18.08.2012 - 13:05) Strannik написал(а):
в том то и дело, что вторая не срабатывает...

Спустя 4 минуты, 3 секунды (18.08.2012 - 13:09) inpost написал(а):
Когда ты пишешь: echo $row['id'] - тебе выводит ID второй таблицы, которая затёрла ID из первой! А сортирует по первой.

Спустя 6 часов, 25 минут (18.08.2012 - 19:34) Strannik написал(а):
нет, сортировка по 2-му случаю(по id) не срабатывает...

вот, что я получаю в базе(сорри за размер):

user posted image

Спустя 57 минут, 59 секунд (18.08.2012 - 20:32) inpost написал(а):
Что я вижу, num: 1,2,3,4,5 . Всё нормально отсортировано. Ты вообще о чём?

Спустя 15 минут, 14 секунд (18.08.2012 - 20:47) Strannik написал(а):
inpost
ORDER by PS.num ASC, P.id DESC

по P.id Desc сортировка не прошла...

Как тогда применить дополнительную сортировку? отдельным sql запросом?

Спустя 7 минут, 55 секунд (18.08.2012 - 20:55) Winston написал(а):
А так?
SELECT *
FROM (SELECT * FROM `projects` ORDER BY id DESC) AS P
LEFT JOIN `project_sequens` AS PS
ON P.category = PS.category
GROUP BY P.category
ORDER BY PS.num ASC

Спустя 23 минуты, 11 секунд (18.08.2012 - 21:19) inpost написал(а):
Strannik
Сначала сортируется по первому полю.
1
2
3
4
5
6


Если есть ДУБЛИ по полям (дважды num: 1), тогда вторая сортировка внутри num 1.

Спустя 1 день, 5 часов, 58 минут, 2 секунды (20.08.2012 - 03:17) Strannik написал(а):
Хорошо.
У меня есть 2 таблицы:
1-я таблица projects(в ней забиты описание проектов)

CREATE TABLE IF NOT EXISTS `projects` (
`id` int(11) NOT NULL auto_increment,
`idn` varchar(30) NOT NULL,
`name` varchar(100) NOT NULL,
`category` varchar(50) NOT NULL,
`text` varchar(4000) NOT NULL,
`article` varchar(800) NOT NULL,
`mainimage` varchar(30) NOT NULL,
`image1` varchar(30) NOT NULL,
`image2` varchar(30) NOT NULL,
`image3` varchar(30) NOT NULL,
`image4` varchar(30) NOT NULL,
`image5` varchar(30) NOT NULL,
`image6` varchar(30) NOT NULL,
`image7` varchar(30) NOT NULL,
`image8` varchar(30) NOT NULL,
`image9` varchar(30) NOT NULL,
`image10` varchar(30) NOT NULL,
`workers` varchar(500) NOT NULL,
`client` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;


2-я таблица project_sequens(ней указывается позиция(num) каждой категории(category), которая дальнейшем используется при выводе из таблицы projects

CREATE TABLE IF NOT EXISTS `project_sequens` (
`id` int(11) NOT NULL auto_increment,
`category` varchar(50) NOT NULL,
`num` int(4) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE=MyISAM DEFAULT CHARSET=utf8;


Для вывода из таблицы projects строк с уникальными категориями, в порядке, указанном для категорий в таблице project_sequens, я использую sql запрос:
SELECT * FROM `projects` AS P LEFT JOIN `project_sequens` AS PS ON P.category=PS.category group by P.category ORDER by PS.num ASC


Но я столкнулся с проблемой, что из таблицы projects выводятся первые строки с уникальными категориями, а мне нужно, чтобы из таблицы projects выводились последние строки с уникальными категориями, т.е. если у нас в таблице projects есть строки:
1 категория
2 категория
3 категория
4 категория
5 категория
то чтобы выводилась не 1 категория, а 5 категория...

Расписал подробно, надеюсь все понятно...

Просто я столкнулся с проблемой, а есть ли ее решение я не знаю, решил уточнить, может кто знает как вывести строки нужным мне способом?

Спустя 6 часов, 18 минут, 44 секунды (20.08.2012 - 09:35) inpost написал(а):
я не понял тебя. Вот вверху выбрано 5 записей и отсортировано по num, в чём не так? Конкретно верхний скрин-шот опиши, как именно записи должны располагаться?

Спустя 1 день, 5 часов, 51 минута, 45 секунд (21.08.2012 - 15:27) Strannik написал(а):
inpost не заметил ответ Winston все в порядке, спасибо.

P.S.: смысл в том, что при моем запросе у меня выдавались строки с уникальными категориями с начала таблицы, а мне нужно было, чтобы выдавались последние добавленные строки с уникальным значением.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.