авто JOIN

Redjik

Джедай-мастер
В последнее время приходиться делать фасетные классификаторы на MODX, но это все лирика...

По структуре... tv - дополнительные параметры

site_content -> id,content,tvid
tvTemplate -> id, name
tmplvar_contentvalues -> id, idteplate, value

Тоесть чтобы узнать значение дополнительного параметра на странице - проблемы нет...
что я делаю, чтобы получить все тв в одной строке для документа

PHP:
$sql = "SELECT
		
				m.id,
				m.content,
				t1.value as sex,
				t2.value as image,
				t3.value as top,
				t4.value as pop,
				t5.value as options,
				t6.value as price,
				p.pagetitle as parent_name 
 

				FROM `en_catalog` as m
				LEFT JOIN `en_catalog_tmplvar_contentvalues` AS t1 ON (t1.tmplvarid = '6' AND m.id = t1.contentid)
				LEFT JOIN `en_catalog_tmplvar_contentvalues` AS t2 ON (t2.tmplvarid = '9' AND m.id = t2.contentid)
				LEFT JOIN `en_catalog_tmplvar_contentvalues` AS t3 ON (t3.tmplvarid = '8' AND m.id = t3.contentid)
				LEFT JOIN `en_catalog_tmplvar_contentvalues` AS t4 ON (t4.tmplvarid = '7' AND m.id = t4.contentid)
				LEFT JOIN `en_catalog_tmplvar_contentvalues` AS t5 ON (t5.tmplvarid = '5' AND m.id = t5.contentid)
				LEFT JOIN `en_catalog_tmplvar_contentvalues` AS t6 ON (t6.tmplvarid = '4' AND m.id = t6.contentid) 
				LEFT JOIN `en_site_content` AS p ON (m.parent = p.id)
				
				WHERE ".$ids.$parent.$sex.$type.$price."";
тоесть сам смотрю название полей и сам их 'обзываю' в запросе...
можно ли сделать то-же самое, но автоматом...?
 

Dovg

Продвинутый новичок
> и кидать его в хранимую процедуру
Зачем? Почему бы просто не выполнить запрос, сформированный скриптом.
 

fixxxer

К.О.
Партнер клуба
Поразительно. А заджойнить 1 раз и раскидать в php никак?
 

Redjik

Джедай-мастер
> и кидать его в хранимую процедуру
Зачем? Почему бы просто не выполнить запрос, сформированный скриптом.
тогда получиться тавталогия... сначала запрос, чтобы узнать колличество тв параметров и их имена
и второй запрос уже непосредственно к бд, для получения записи...

А так, если мы в админке, что-нибудь поменяли, например добавили еще пару дополнительных параметров к товару, то из админки запускается скрипт, который перезаписывает хранимую процедуру...

Далее доступ уже к строчке одинм запросом через эту процедуру...
 

Redjik

Джедай-мастер
Поразительно. А заджойнить 1 раз и раскидать в php никак?
нет, ибо фильтровать не получиться,предположим нужно 10 записей где тв1 = 10 и тв2 > 3...
поэтому и приходится в один запрос join ить

ЗЫ. не совсем понятно обьяснил - не 10 записей, а именно 10 товаров, со всеми тв полями
 
Сверху