Имеется две таблицы: catalog, catalog_alias.
В catalog идёт список позиций с полями (все писать не буду смысла нет)
id, article, brand_id.
В catalog_alias
id, from_analog_article, from_brand_id, to_analog_article, to_brand_id
Сейчас запрос имеет вид: ЗАПРОС ИСПРАВИЛ !!!! (до этого был то что тестил, случайно вставил.)
select catalog.*,brands.name as brand_name,partners.name_original FROM catalog
INNER JOIN brands ON brands.id = catalog.brand_id
INNER JOIN partners ON partners.id IN (SELECT partner_id FROM pricelist WHERE id=catalog.pricelist_id) WHERE `article` = ''
Но он не использует catalog_alias.
Помогите переписать.
Данные имеют вид:
catalog:
article brand_id
oc121 104
7918 10
catalog_alias:
f_a_a f_b_i t_a_a t_b_i
oc121 104 7918 10
Т.е по вводу 7918 или oc121 должен вывести одно и тоже. 2 строки (ну или более).
При этом даже если в catalog - отсутствует позиция с артикулом, но алиас на неё имеется он должен вывести строку. Пример удаляем из catalog oc121 и в запросе указываем его то бишь должен в итоге вывести позицию из catalog с артикулом 7918.
Из обсуждений в комментариях пришли к решению ниже:
select * from catalog join catalog_alias
ON (catalog_alias.from_analog_article=catalog.article and catalog_alias.from_brand_id=catalog.brand_id)
OR (catalog_alias.to_analog_article=catalog.article and catalog_alias.to_brand_id=catalog.brand_id)
WHERE catalog_alias.to_analog_article='7918'
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости