Игорь_Vasinsky
26.10.2012 - 16:36
вообщем делаю фильтр для магазина
есть таблица со свойствами товара
pid | name
есть таблица с дополнительными атрибутами
a_pid | attr_id | text
связь обоих по pid = a_pid
есть 2 attr_id - 12 и 14
есть в GET $attr_text и $attr_color
нужно составить запрос - чтобы
WHERE (attr_id = 12 AND text = $attr_text)
AND
WHERE (attr_id = 14 AND text = $attr_color)
достаточно только составить условие по второй таблице
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
26.10.2012 - 17:15
up
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
26.10.2012 - 18:29
очень up
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
xlebosol
26.10.2012 - 18:46
SELECT * FROM t1, t2 WHERE attr_id IN(12, 14) AND text IN(attr_text, $attr_color) JOIN ON (t1.a_pid=t2.pid)
Игорь_Vasinsky
26.10.2012 - 19:36
меня вот это кусок интересовал
Цитата |
text IN(attr_text, $attr_color) JOIN ON (t1.a_pid=t2.pid) |
у меня там большой сложный запрос к которому нуно дописать это условие.
в конце основного запроса уже используется ON, поэтому я дописал через AND
AND pa.attribute_id IN(12, 16) AND pa.`text` IN('".urldecode(mysql_real_escape_string($_GET['attr_text']))."',
'".urldecode(mysql_real_escape_string($_GET['color']))."') ";
но условие не сработало.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
26.10.2012 - 20:13
up again
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
alexbel2404
26.10.2012 - 22:57
SELECT * FROM tbl1 JOIN tbl2 ON tbl1.a_pid = tbl2.pid WHERE tbl2.attr_id IN(12, 14) AND tbl2.text IN(attr_text, attr_color)
Если я правильно понял задачу)
Игорь_Vasinsky
8.11.2012 - 13:05
Цитата |
SELECT * FROM tbl1 JOIN tbl2 ON tbl1.a_pid = tbl2.pid WHERE tbl2.attr_id IN(12, 14) AND tbl2.text IN(attr_text, attr_color) |
этот кусок не срабатывает
Цитата |
WHERE tbl2.attr_id IN(12, 14) |
это будет true для каждого товара, т.к. у каждого товара есть эти 2 атрибута
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Alchemist
8.11.2012 - 15:44
Игорь, у меня такое чувство, что вы вообще плохо понимаете что делаете....
1) комбинация urldecode(mysql_real_escape_string()) не имеет никакого смысла вообще.
2) проблема с запросом решается либо добавлением в JOIN таблицы аттрибутов для каждого аттрибута из WHERE, либо если фильтрация идет всегда по совокупности условий, то можно просто выбирать подходящие аттрибуты и группировать их по ID продукта, в конце оставляя только те, которые выполняют все условия.
Игорь_Vasinsky
8.11.2012 - 15:52
Цитата |
urldecode(mysql_real_escape_string()) |
это 2 совершенно разные функции
вопрос уже решён.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.