Спустя 40 минут, 16 секунд (8.08.2011 - 15:15) linker написал(а):
... ORDER BY `name` ASC|DESC
Спустя 1 час, 41 минута, 59 секунд (8.08.2011 - 16:57) adm119 написал(а):
linker, не всё так просто Если такой запрос посылать, то будет сортировать по алфавиту позиций, а мне надо по алфавиту категорий.
Спустя 14 часов, 44 минуты, 37 секунд (9.08.2011 - 07:42) linker написал(а):
Джойнишь или селектишь таблицу с категориями и
... ORDER BY `category`.`name` ASC|DESC
Спустя 4 часа, 41 минута, 21 секунда (9.08.2011 - 12:23) adm119 написал(а):
linker, я наверное объяснил плохо. Сейчас попробую объяснить лучше.
Есть 2 таблицы:
TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
TABLE `items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`category` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
В таблице category находятся список категорий услуг. (Например: Лечение; Протезирование; Отбеливание и т.д.) А в таблице items хранятся непосредственно услуги (Например: Пломба передних зубок; Пломба коренных зубов; Отбеливание зубов; Протезирование импортными средствами и т.д.). В таблице items много-много всего, и поле category в этой таблице просто содежрить цифру, которая соответствует цифре нужной категории в поле id таблицы category.
Если сделать запрос "... ORDER BY `category`.`name` ASC|DESC", то отсоритуется по цифрам. А мне надо, чтобы данные таблицы items сортировались по категории, но не по цифре, а по названию. Иначе говоря, чтобы данные таблицы items сортировались по полю name таблицы category. Вот
Есть 2 таблицы:
TABLE `category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
)
TABLE `items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`category` int(11) NOT NULL,
PRIMARY KEY (`id`)
)
В таблице category находятся список категорий услуг. (Например: Лечение; Протезирование; Отбеливание и т.д.) А в таблице items хранятся непосредственно услуги (Например: Пломба передних зубок; Пломба коренных зубов; Отбеливание зубов; Протезирование импортными средствами и т.д.). В таблице items много-много всего, и поле category в этой таблице просто содежрить цифру, которая соответствует цифре нужной категории в поле id таблицы category.
Если сделать запрос "... ORDER BY `category`.`name` ASC|DESC", то отсоритуется по цифрам. А мне надо, чтобы данные таблицы items сортировались по категории, но не по цифре, а по названию. Иначе говоря, чтобы данные таблицы items сортировались по полю name таблицы category. Вот
Спустя 45 минут, 26 секунд (9.08.2011 - 13:09) linker написал(а):
Да ты хорошо объяснил, а я тебе ответил вроде, но раз ты не понимаешь, придётся развернуть
SELECT
`items`.*, `category`.`name` AS `catname`
FROM
`items`
LEFT JOIN `category` ON `category`.`id` = `items`.`category`
ORDER BY
`category`.`name` ASC
Спустя 35 минут, 33 секунды (9.08.2011 - 13:44) adm119 написал(а):
Ага, теперь начинаю понимать. А что такое catname? Откуда взялось?
Спустя 7 минут, 51 секунда (9.08.2011 - 13:52) VolDroN написал(а):
Это означает что category.name надо выводить под именем catname.
$row['catname'] покажет содержимое category.name
$row['catname'] покажет содержимое category.name
Спустя 2 часа, 5 минут, 51 секунда (9.08.2011 - 15:58) linker написал(а):
adm119
Понимаешь, у тебя в таблице `items` и `category` одинаковые поля `name`, чтобы избежать при обработке в PHP подмены `items`.`name` на `category`.`name` я для него использовал алиас `catname` и тогда в цикле можно так
Понимаешь, у тебя в таблице `items` и `category` одинаковые поля `name`, чтобы избежать при обработке в PHP подмены `items`.`name` на `category`.`name` я для него использовал алиас `catname` и тогда в цикле можно так
while($row = mysql_fetch_assoc($res))
{
echo $row['catname'];
}
Спустя 26 минут, 41 секунда (9.08.2011 - 16:25) adm119 написал(а):
Всё, теперь всё понял. Попробовал, всё работает.
linker, огромное спасибо!
Пойду курить мануал по LEFT JOIN.
linker, огромное спасибо!
Пойду курить мануал по LEFT JOIN.