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

  • Автор темы Автор темы ReMaRk
  • Дата начала Дата начала

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 тысяч записей.
 
добавь поле orderby, запиши туда нужный тебе порядок и сортируй по нему ...
 
позиция не должна быть закреплена за не "фиксированными" записями, потому что на них должен влиять order by
 
была закреплена 1-я позиция, а за prod_id-1 закреплена 4-я позиция
а если результатом выборки будут эти 2 записи, то та что закреплена за 4-ой позицией будет второй ?

-~{}~ 28.09.04 12:08:

сортировать в ПХП-скрипте
 
фиксированные номера должны идти на своих местах, это значит, что между 1-ой и 4-ой могут и должны попасть, если соответствуют критериям выборки, остальные записи в "неопределенном порядке" (в том порядке, который уже стоит в ORDER BY для остальных)
 
Средствами SQL накак не сделаеш, ИМХО.
Можно в РНР с масивом определенные манипуляции првести.
 
Создаешь поле
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 массива.
 
в mysql 5 можно попробовать через ХП, но тебя ведь это не устроит ?
 
меня устраивает все =), как через хранимые процедуры? (интересует внутренний алгоритм этой процедуры)
 
осспидя.
выбрать сначала особенные в массив, потом выводить остальные, загибая пальцы и подпихивая в нужном месте эту заказуху :-)

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