







|
MySQL.RU - Webboard
Вернуться
вложенный запрос в order by (mosquito) 15/09/2009 - 22:22:23
Re: вложенный запрос в order by (bac) 16/09/2009 - 08:40:30
Re: вложенный запрос в order by (mosquito) 20/09/2009 - 11:52:22
From: mosquito - 15/09/2009 - 22:22:23
Subject:вложенный запрос в order by
-----------------
здраствуйте.
есть список товаров
нужно отсортировать его, если цена товара 0 то сортируем по минимальной цене атрибута товара если цена товара больше 0 то по цене товара
таблица товаров:
CREATE TABLE products (
products_id int NOT NULL auto_increment,
products_ean varchar(255),
products_quantity int(4) NOT NULL,
products_shippingtime int(4) NOT NULL,
products_model varchar(255),
group_permission_0 tinyint(1) NOT NULL,
group_permission_1 tinyint(1) NOT NULL,
group_permission_2 tinyint(1) NOT NULL,
group_permission_3 tinyint(1) NOT NULL,
products_sort int(4) NOT NULL DEFAULT '0',
products_image varchar(255),
products_price decimal(15,4) NOT NULL,
products_discount_allowed decimal(15,4) DEFAULT '0' NOT NULL,
products_date_added datetime NOT NULL,
products_last_modified datetime,
products_date_available datetime,
products_weight decimal(5,2) NOT NULL,
products_status tinyint(1) NOT NULL,
products_tax_class_id int NOT NULL,
product_template varchar (64),
options_template varchar (64),
manufacturers_id int NULL,
products_ordered int NOT NULL default '0',
products_fsk18 int(1) NOT NULL DEFAULT '0',
products_vpe int(11) NOT NULL,
products_vpe_status int(1) NOT NULL DEFAULT '0',
products_vpe_value decimal(15,4) NOT NULL,
products_startpage int(1) NOT NULL DEFAULT '0',
products_startpage_sort int(4) NOT NULL DEFAULT '0',
products_to_xml tinyint(1) NOT NULL DEFAULT '1',
yml_bid tinyint(1) NOT NULL DEFAULT '0',
yml_cbid tinyint(1) NOT NULL DEFAULT '0',
products_page_url varchar(255),
PRIMARY KEY (products_id),
KEY idx_products_date_added (products_date_added)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
атрибуты товаров:
CREATE TABLE products_attributes (
products_attributes_id int NOT NULL auto_increment,
products_id int NOT NULL,
options_id int NOT NULL,
options_values_id int NOT NULL,
options_values_price decimal(15,4) NOT NULL,
price_prefix char(1) NOT NULL,
attributes_model varchar(255) NULL,
attributes_stock int(4) NULL,
options_values_weight decimal(15,4) NOT NULL,
weight_prefix char(1) NOT NULL,
sortorder int(11) NULL,
PRIMARY KEY (products_attributes_id),
KEY PRODUCTS_ID_INDEX (products_id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci;
нужно получить запрос который выбирает товары из бд и сортирует по products_price или по MIN(options_value_price)
должно получится чтото похожее на:
select * from products_description pd, products_to_categories p2c, products p
left join manufacturers m on p.manufacturers_id = m.manufacturers_id
left join specials s on p.products_id = s.products_id
where p.products_status = '1' and p.products_id = p2c.products_id
and pd.products_id = p2c.products_id and pd.language_id = '1' and p2c.categories_id = '2'
ORDER BY
(select MIN(pa.options_values_price) as price from products_attributes as pa where (pa.options_values_price <> 0) and (pa.products_id = p.products_id)) desc
собственно как изменить часть order by чтобы если prod_price = 0 было так как есть а если products_price >0 то было order by p.products_price?
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
36206
|
|