Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка товаров в магазине
 
 автор: rcCube   (17.08.2011 в 17:39)   письмо автору
 
 

Здравствуйте, проблема у меня такая:

Есть таблица всех данных обо всех товарах.
Таблица имеет вид:

id_product | id_setting | value

Мне нужно показать три товара
id_product in (1,5,17)

Каждый товар имеет описание из трех id_setting

id_setting
1
2
3

Где
1 - наименование
2 - цена
3 - дата завоза

Количество и прочее опущу - за ненадобность.

Вообщем проблема такая.

Необходимо выбрать товары с номерами 1,5,17 и отсортировать их на усмотрение покупателя.
Один захочет посмотреть начиная с новинок, другой отсортировать по цене, третий по алвавиту. Нужно дать возможность сортировки как ASK по каждому столбцу, так и DESC.

И вроде бы все просто, но уже пару дней не могу сообразить как правильно достать и как потом обработать.

Подскажите пожалуйста, кто делал похожие реализации у себя.

Спасибо.

  Ответить  
 
 автор: Valick   (17.08.2011 в 17:47)   письмо автору
 
   для: rcCube   (17.08.2011 в 17:39)
 

у вас в id_setting одно значение или через запятую?
опишите таблицы подробнее, а то не понятно совсем

  Ответить  
 
 автор: rcCube   (17.08.2011 в 17:50)   письмо автору
 
   для: Valick   (17.08.2011 в 17:47)
 

   insert into test ( `id_product`, `id_setting`, `value` )
             VALUES
             ( '1', '11', 'value_1_11' ),
             ( '1', '12', 'value_1_12' ),
             ( '1', '13', 'value_1_13' ),
             ( '2', '11', 'value_2_11' ),
             ( '2', '12', 'value_2_12' ),
             ( '2', '13', 'value_2_13' ),
             ( '3', '11', 'value_3_11' ),
             ( '3', '12', 'value_3_12' ),
             ( '3', '13', 'value_3_13' ),
             ( '4', '11', 'value_4_11' ),
             ( '4', '12', 'value_4_12' ),
             ( '4', '13', 'value_4_13' );


Это значит, что в таблицу добавлено четыре товара, каждый имеет три настройки (11,12,13 )

  Ответить  
 
 автор: Valick   (17.08.2011 в 17:52)   письмо автору
 
   для: rcCube   (17.08.2011 в 17:50)
 

какая смысловая нагрузка поля содержащего value_1_11?
___
у вас несколько странная организация структуры таблиц
по идее цена и дата завоза (и остальные параметры) должны быть в одной строке

  Ответить  
 
 автор: rcCube   (17.08.2011 в 19:22)   письмо автору
 
   для: Valick   (17.08.2011 в 17:52)
 

Видимо я не умею понятно объяснять :)
Правильно, все значения хранятся в одном поле, в этом то вся и сложность.


| id_product         | id_setting       |      value      |

|          1         |          11      | nokia N71     |   

|          1         |          12      |     7100       |   

|          1         |          13      |19-04-2009     |   

|          2         |          11      | nokia N85     |   

|          2         |          12      |     7500       |   

|          2         |          13      |20-04-2009     |   

|          3         |          11      | nokia N73     |   

|          3         |          12      |     9500       |   

|          3         |          13      |21-04-2009     |   


где
11 - наименование товара
12 - цена товара
13 - дата появления в магазине

  Ответить  
 
 автор: Valick   (18.08.2011 в 11:25)   письмо автору
 
   для: rcCube   (17.08.2011 в 19:22)
 

Первая нормальная форма
4. Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего)
__
Более простое определение домена — это допустимое потенциальное множество значений одного типа.
У вас же в одном поле данные разного типа. Этого быть не должно.

  Ответить  
 
 автор: cheops   (18.08.2011 в 10:44)   письмо автору
 
   для: rcCube   (17.08.2011 в 17:39)
 

Вам скорее всего придется осуществлять самообъединение трех таблиц test, чтобы добиться, чтобы наименование, цена и дата завоза оказались в одной строке результирующей таблицы, после чего сортировать результат по любому из полей.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования