Порядок выбора записей из базы (не ORDER BY)

ReMaRk

Новичок
Порядок выбора записей из базы (не ORDER BY)

Укажите путь!

Есть таблица с записями товаров вида:
create table products(
prodid int(4) unsigned primary key auto_increment,
description char(255),
price float(4,2) unsigned
)
prodid_|_description_|_price
__1______text_1_____3.00
__2______text_2_____3.50
__3______text_3_____4.22
__4______text_4_____1.50
__5______text_5_____2.33

Нужно каким-то образом закрепить порядок выбора некоторых записей, то есть так, чтоб например за prod_id-3 была закреплена 1-я позиция, а за prod_id-1 закреплена 4-я позиция, то есть в результате должна быть такая последовательность: prod_id-3, далее на второй и третьей позиции записи в зависимости от сортировки (но не prod_id-1), prod_id-1, остальные записи так же в зависимости от сортировки...
В таблице порядка 50 тысяч записей.
 

chira

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

ReMaRk

Новичок
позиция не должна быть закреплена за не "фиксированными" записями, потому что на них должен влиять order by
 

Макс

Старожил PHPClub
была закреплена 1-я позиция, а за prod_id-1 закреплена 4-я позиция
а если результатом выборки будут эти 2 записи, то та что закреплена за 4-ой позицией будет второй ?

-~{}~ 28.09.04 12:08:

сортировать в ПХП-скрипте
 

ReMaRk

Новичок
фиксированные номера должны идти на своих местах, это значит, что между 1-ой и 4-ой могут и должны попасть, если соответствуют критериям выборки, остальные записи в "неопределенном порядке" (в том порядке, который уже стоит в ORDER BY для остальных)
 

Johannes

Guest
Средствами SQL накак не сделаеш, ИМХО.
Можно в РНР с масивом определенные манипуляции првести.
 

Макс

Старожил PHPClub
Создаешь поле
sort int unsigned not null default 0,
Туда записываешь твой порядок для определенных строк.

Допустим тебе надо выбрть 20 записей.
Делаешь сначало запрос :
SELECT * FROM your_tab WHERE sort <= 20 ....<плюс твои доп. условия> ORDER BY sort LIMIT 0,20
получишь записи с установленными порядками. Считаешь их кол-во. Допустим их было 7. Выбираешь еще 13 записей с нефиксированным порядком (у них sort = 0) с сортировкой по твоему полю.
С помощью ПХП объединяешь эти 2 массива.
 

Макс

Старожил PHPClub
в mysql 5 можно попробовать через ХП, но тебя ведь это не устроит ?
 

ReMaRk

Новичок
меня устраивает все =), как через хранимые процедуры? (интересует внутренний алгоритм этой процедуры)
 

Фанат

oncle terrible
Команда форума
осспидя.
выбрать сначала особенные в массив, потом выводить остальные, загибая пальцы и подпихивая в нужном месте эту заказуху :)

делов на две строчки кода, а разговоров-то
 
Сверху