Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




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

> Original message text:
> 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?
>


From: bac - 16/09/2009 - 08:40:30
Subject:вложенный запрос в order by
-----------------
Как-то так (не проверил)

select *,
IIF(pa.options_values_price <> 0, pa.options_values_price, prc.price) AS pri
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
left join (
SELECT pa.products_id, MIN(pa.options_values_price) as price FROM products_attributes AS pa
WHERE pa.options_values_price <> 0
) prc
ON prc.products_id = p.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 pri DESC


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36206



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |