|
|
|
| Здравствуйте, проблема у меня такая:
Есть таблица всех данных обо всех товарах.
Таблица имеет вид:
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.
И вроде бы все просто, но уже пару дней не могу сообразить как правильно достать и как потом обработать.
Подскажите пожалуйста, кто делал похожие реализации у себя.
Спасибо. | |
|
|
|
|
|
|
|
для: rcCube
(17.08.2011 в 17:39)
| | у вас в id_setting одно значение или через запятую?
опишите таблицы подробнее, а то не понятно совсем | |
|
|
|
|
|
|
|
для: 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 ) | |
|
|
|
|
|
|
|
для: rcCube
(17.08.2011 в 17:50)
| | какая смысловая нагрузка поля содержащего value_1_11?
___
у вас несколько странная организация структуры таблиц
по идее цена и дата завоза (и остальные параметры) должны быть в одной строке | |
|
|
|
|
|
|
|
для: 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 - дата появления в магазине | |
|
|
|
|
|
|
|
для: rcCube
(17.08.2011 в 19:22)
| | Первая нормальная форма
4. Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего)
__
Более простое определение домена — это допустимое потенциальное множество значений одного типа.
У вас же в одном поле данные разного типа. Этого быть не должно. | |
|
|
|
|
|
|
|
для: rcCube
(17.08.2011 в 17:39)
| | Вам скорее всего придется осуществлять самообъединение трех таблиц test, чтобы добиться, чтобы наименование, цена и дата завоза оказались в одной строке результирующей таблицы, после чего сортировать результат по любому из полей. | |
|
|
|