выборка из нескольких таблиц при возможном отсутствии значения

ayrat9

Новичок
выборка из нескольких таблиц при возможном отсутствии значения

[sql]
SELECT p.url, p.name, p.level, p.parent_id, a.id, a.url, a.name, a.price, cp.name, cp.name_eng, cp.country FROM ".$sql_pref."_cat_rubs as p, ".$sql_pref."_cat_arts as a, ".$sql_pref."_producers as cp WHERE p.id=a.parent_id AND a.enable='Yes' AND p.enable='Yes' AND cp.id=a.producer_id AND ((a.name LIKE '%". str_replace(" ", "%' AND a.name LIKE '%", $good). "%') OR (a.content LIKE '%". str_replace(" ", "%' AND a.content LIKE '%", $good). "%') OR (a.artikul LIKE '%". str_replace(" ", "%' AND a.artikul LIKE '%", $good). "%'))
[/sql]

-~{}~ 18.06.09 16:45:

cat_rubs - рубрики каталога
cat_arts - товары каталога
producers - производители

$good - переменная с текстом запроса (им может быть слово или артикул товара)

есть еще таблица cat_artsmod - спецификации товара с уникальными артикулами, которых может не быть в описании самого товара в таблице cat_arts. спецификация товара линкуется с описанием товара: cat_arts.id=cat_artsmod.parent_id

необходимо модифицировать запрос, чтобы он мог выводить описание товара, если находится искомый артикул в таблице cat_arts и(или) таблице cat_artsmod
 

Beavis

Banned
Куда этот запрос должен выводить описание товара?))

И вообще, от нас то что нужно?
 

ayrat9

Новичок
попробую на пальцах объяснить.
допустим есть след записи в таблицах

cat_arts
----------
id=1 artikul=0001 name=бублик descr=хлебобулочное изделие producer_id=3
id=2 artikul=0002 name=батон descr=черный и белый producer_id=2
id=3 artikul=0003 name=булка descr=кондитерское изделие
producer_id=3

producers
-------------
id=2 name=звездный
id=3 name=сладко

cat_artsmod
---------------
id=1 artikul=0001a name=бублик с маком parent_id=1

хочу чтобы бублик с маком нашелся по запросу 0001a

-~{}~ 18.06.09 17:26:

а потом чтоб можно было отыскать булку по запросу "0003"

-~{}~ 18.06.09 17:26:

сильно не ржать
 

Beavis

Banned
Автор оригинала: ayrat9

хочу чтобы бублик с маком нашелся по запросу 0001a
[SQL]
SELECT name FROM cat_artsmod WHERE artikul = '0001a'
[/SQL]

Автор оригинала: ayrat9
а потом чтоб можно было отыскать булку по запросу "0003"
[SQL]
SELECT name FROM cat_arts WHERE artikul = '0003'
[/SQL]
а в чем проблема то?)
 

ayrat9

Новичок
нет
надо модифицировать $sql_query, чтобы находил cat_arts.name
вне зависимости от того, есть у товара модификации или нет

beavis извини, но на подобный твоему юмор больше реагировать не буду.
 

Beavis

Banned
ayrat9
Я дал хоть один ответ который не соответствует твоему вопросу?
 

Gas

может по одной?
необходимо модифицировать запрос, чтобы он мог выводить описание товара, если находится искомый артикул в таблице cat_arts и(или) таблице cat_artsmod
добавить left join c таблицей cat_artsmod и в перечислении выбираемых полей добавить if, который будет смореть какое описание не пустое и его вытягивать ?
 

ayrat9

Новичок
gas мерси попробую
чем кстати left join от right join отличается?
 

Gas

может по одной?
направлением связывания таблиц, в мане написано и даже примеры есть
 
Сверху