Как работает сейчас. Допустим есть 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