Вывод товаров из MySQL с группированием

[Удален]
909

Имеется заполненная база данных товаров, необходимо придумать механизм вывода их с группированием. Сейчас поясню на примере.

Допустим, товары имеют id от 1 до 100. Необходимо сгруппировать товары 3,15 и 45, чтобы вывод происходил в следующей последовательности:

1,2,3,15,45,4,5,6,7,8,9,10,11,12,13,14,16,17...

Использовать дополнительное поле, например, position, и сортировать по нему нельзя, потому что в таком случае все группы окажутся в начале вывода

3,15,45,1,2,4,5,6,7,8,9,10,11,12,13,14,16,17...

ДП
На сайте с 23.11.2009
Offline
203
#1

order by field(id,3,15,45) - как-то так.

посмотрите мануал по функции field

Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#2

Нормально надо БД проектировать.

Для группировки (по категориям) надо использовать дополнительное поле.

Использовать дополнительное поле, например, position, и сортировать по нему нельзя, потому что в таком случае все группы окажутся в начале вывода

3,15,45,1,2,4,5,6,7,8,9,10,11,12,13,14,16,17...

1,2 - position = 1

3,15,45 - position = 2

4,5,6 - position = 3

и т.д.

Так низя?

ДП
На сайте с 23.11.2009
Offline
203
#3

Хотя, судя по всему я ваш вопрос не понял.

Как вариант - назначить каждом товару поле "группа" и сортировать по нему через field() аналогично, не?

[Удален]
#4

Естественно, базу данных можно перекроить под новые требования, введя новые поля. Без этого и не получится. Просто изначально такой группировки не предусматривалось.

Сейчас нужно определить метод создания групп и метод вывода с группировкой.

Допустим, созданы две группы товаров: 3,8,9 и 5,11,13

Основная сортировка при выводе, например, ведётся по id, но когда встретился первый товар группы, следом за ним нужно вывести остальные товары его группы, а затем продолжить вывод по id:

1,2,3,8,9,4,5,11,13,6,7,10,12,14,15...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий