как выбрать последнюю запись в таблице

Статус
В этой теме нельзя размещать новые ответы.

Safary

Новичок
как выбрать последнюю запись в таблице

Вот не знаю как последнюю запись выбрать, запрос типа:
"SELECT * FROM structure WHERE price САМАЯ БОЛЬШАЯ"

Очень нужно.. Помогите

-~{}~ 23.03.09 15:48:

тоесть не последнюю запись таблице, а именногде какая-нить переменная самая большая...
 

Safary

Новичок
так таблица у меня по полю sort формируется, а мне где самый высокий прайс надо знать =)
 

findnext

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

dimagolov

Новичок
findnext, так в ЛЮБОМ раскладе будет подзапрос, который выполнится столько же раз, сколько строк в выборке. Он может быть быстрым (если по индексу) или закешироваться, но он будет.

Имхо надо делать 2 запроса, а потом при выводе смотреть на совпадение поля с максимумом. Плюс в том, что можно будет критерий сделать любой сложности и это будет 1-й запрос, потом 2-м отбираем все и то, что попадает под критерий, выводим с рюшками.
 

dimagolov

Новичок
zerkms, как я понял, автору нужно вывести все отсортировав по одному критерию, но выделить при выводе строки, которые удовлетворяют другому. в этом случае для твоей сортировки маловато применения.
 

findnext

Новичок
ну тогда да подзапрос или джоин таблицы на себя

-~{}~ 23.03.09 16:33:

pole = (SELECT MAX(pole) FROM tbl) так проще
 

zerkms

TDD infected
Команда форума
dimagolov
а я понял иначе. мораль: ТС нужно учиться объяснять :)
 

dimagolov

Новичок
findnext, ты мое замечание про подзапрос и чем он плох пропустил, как и аргументацию полезности 2-х запросов?
 

Safary

Новичок
Да, сорри, немного неправильно обьяснил.
По полю sort таблица сортируется... А надо узнать какая самая большая цифра после $parent['sort'] - сорта родителя.
Тоесть чтоб не было 2 одинаковых sort, типа:
sort - 1.3.1
sort - 1.3.1
Второй уже 1.3.2 должен быть...

У меня вот для чего это нужно:
Древовидная структура есть, админка..
В админке добавление категории. в таблице категорий такая структура и примерно такие данные:

id___________34
pid__________25
path_________2.25.34
sort_________3.7.1
level_________3
link__________/games/arcads/mario
section_______mario

И вот у меня всё сортируется по полю sort, а сейчас я делаю скрипт добавления категории(скрипт вывода уже сделал)

Мне нужно посчитать какой sort в базу вставлять. Сейчас конструкция такая:

PHP:
$sort=$parent_section['sort'].'.'.W
Вместо знака W как раз нужно вставить переменную с цифрой.
$parent section - это массив категории родителя.
Тоесть для новой категории берется sort из старой, к нему прибавляется точка, а потом надо прибавить цифру.

Вот с цифрой и вся проблемма...

К примеру у меня parent['sort']=1.7.4
Я добавляю категорию и мне нужно взять sort родителя и добавить к нему точку и цифру. т.е. 1.7.4.1
Но вдруг последняя цифра существует... Мне нужно узнать последнюю цифру и инкрементить её и вставить в запрос :)

-~{}~ 23.03.09 22:24:

Тоесть тут получается ищется самое большое число, соответствующее регулярке "^".$parent['sort']".[0-9]
Ну 100 процентов так сделать невозможно, ладно буду другим путем делать. но если возможно напишите всётаки =)
 

dimagolov

Новичок
Safary, ты придумал крайне извращенный способ храниения дерева. Ответь на такие вопросы:
1. Зачем при сортировке внутри категории знать как был отсортирован родитель?
2. Зачем одновременно хранить путь как перечень id родителей и как их названия?
3. Что будет при удалении категории? Надо будет менять все индексы сортировок у всех категорий и у всех элементов? Аналогично при изменении порядка.

Если всю дурь выкинуть, а хранить в элементе только индекс сортировки внутри категории, то надо будет хранить вместе с категорией одно число - максимальный индекс сортировки в ней, и при добавлении нового элемента его инкриментировать.
а вопрос топика отпадет как не имеющий смысла и надобности.

-~{}~ 23.03.09 15:46:

п.с. по большому счету можно использовать id что категории что элемента как индекс сортировки. при FOREIGN KEY (`pid`) REFERENCES `cotegories` (`cid`) ON DELETE CASCADE ON UPDATE CASCADE можно будет удалять-пересортировывать как угодно. типа пузырьком :)
 

Safary

Новичок
1. это для того, чтобы не сортировать потом всё остальное.
типа у меня 250 категорий в таблице, у них Sort стоит 1-250
Если я вторую категорию перемещу чуть выше, то придется не только её sort изменять, а ещё и все sort, которые после идут, тоесть с 2-250 нужно будет инкрементировать..

2. названия чтобы сверять, path - может пригодится как-нибудь, а если не пригодится удалю :) на всякий случай сделал.

3. вот об этом не подумал, полная лажа...

идея отличная. Только не пойму зачем максимальный индекс сортировки хранить?

PHP:
FOREIGN KEY (`pid`) REFERENCES `cotegories` (`cid`) ON DELETE CASCADE ON UPDATE CASCADE
Чуть не офигел как увидел :) Пока что сложновато, не хочу со всеми командами мускула разбираться, можешь просто обьяснить что она делает? Просто если действительно вариант мне подходит - то разберусь.

Что такое внешний ключ даже не знаю, позор мне ((

-~{}~ 24.03.09 00:02:

почитал немного, первую часть понимаю. внешний ключ - для связки двух таблиц нужен, хм... у меня же не две таблицы или тут просто получается что PID ссылается на CID
 

findnext

Новичок
Safary
это связь таблиц по внешнему ключу. ON DELETE CASCADE - означает что если из одной таблицы удалить что то, то и из второй удалится соответствующая запись. ON UPDATE CASCADE - обновиться.
 

dimagolov

Новичок
findnext, Safary. По FOREIGN KEY можно не только связывать разные таблицы, но и саму таблицу с собой. Если какое-либо поле в записи является значением ключа этой или другой таблицы, то оно должно быть связано с тем ключом через FOREIGN KEY, чтобы при изменении или удалении ключа не нарушилась целостность данных.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху