Код:
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) не срабатывает...
вот, что я получаю в базе(сорри за размер):
вот, что я получаю в базе(сорри за размер):

Спустя 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 запросом?
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
2
3
4
5
6
Если есть ДУБЛИ по полям (дважды num: 1), тогда вторая сортировка внутри num 1.
Спустя 1 день, 5 часов, 58 минут, 2 секунды (20.08.2012 - 03:17) Strannik написал(а):
Хорошо.
У меня есть 2 таблицы:
1-я таблица projects(в ней забиты описание проектов)
2-я таблица project_sequens(ней указывается позиция(num) каждой категории(category), которая дальнейшем используется при выводе из таблицы projects
Для вывода из таблицы projects строк с уникальными категориями, в порядке, указанном для категорий в таблице project_sequens, я использую sql запрос:
Но я столкнулся с проблемой, что из таблицы projects выводятся первые строки с уникальными категориями, а мне нужно, чтобы из таблицы projects выводились последние строки с уникальными категориями, т.е. если у нас в таблице projects есть строки:
1 категория
2 категория
3 категория
4 категория
5 категория
то чтобы выводилась не 1 категория, а 5 категория...
Расписал подробно, надеюсь все понятно...
Просто я столкнулся с проблемой, а есть ли ее решение я не знаю, решил уточнить, может кто знает как вывести строки нужным мне способом?
У меня есть 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.: смысл в том, что при моем запросе у меня выдавались строки с уникальными категориями с начала таблицы, а мне нужно было, чтобы выдавались последние добавленные строки с уникальным значением.
P.S.: смысл в том, что при моем запросе у меня выдавались строки с уникальными категориями с начала таблицы, а мне нужно было, чтобы выдавались последние добавленные строки с уникальным значением.