[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: If else if
rooby
Здравствуйте! Подскажите пожалуйста, как расширить запрос. Спасибо!

Как работает сейчас. Допустим есть 2 домена и один общий для них товар. Для каждого домена могут быть свои версии описаний товара в зависимости от языка.
Например.
Домен 1. описание общее
Домена 2 описание из ` products_lng, зык англ.
Домена 2 описание из ` products_lng, зык рус.
Реализация. Из таблицы products выбираются данные, если их нет в таблице products_lng. Если они там есть, то выбираются из нее.

Как надо расширить. Для таблицы products_lng сделал дополнительное поле domainid. И теперь порядок выбора должен быть такой:
Если есть в таблице products_lng.domainid и products_lng.code то выбираем это описание
Иначе если есть в таблице products_lng.code то выбираем это описание
В остальных случаях выбираем отписание products.descr

Таблица, где хранятся языковые описания и описание в зависимости от домена
CREATE TABLE IF NOT EXISTS ` products_lng ` (
`code` char(2) NOT NULL DEFAULT '',
`productid` int(11) NOT NULL DEFAULT '0',
`descr` text NOT NULL,
domainid VARCHAR( 255 ) NOT NULL,
PRIMARY KEY (productid)
)
ENGINE=MyISAM DEFAULT CHARSET=latin1;

Сам запрос
SELECT IF(products_lng.productid != '', products_lng.descr, products.descr) as descr
FROM products
LEFT JOIN domain_products ON domain_products.prid = products.productid AND domain_products.domainid = '1'
LEFT JOIN products_lng ON products_lng.productid = products.productid AND products_lng.code = 'en'
WHERE ...
GROUP BY products.productid
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.