возник такой вопрос, есть запрос на объединение данных из нескольких таблиц, сейчас появилась необходимость переделать его на "пересечение" данных
Вот сам запрос:
CODE ( SQL):
скопировать код в буфер обмена
SELECT DISTINCT * FROM ( (SELECT DISTINCT `b_iblock_element_property`.`IBLOCK_ELEMENT_ID`, `b_iblock_element_property`.`VALUE`, `b_iblock_element`.`NAME`, b_iblock_element_property.IBLOCK_PROPERTY_ID, `b_iblock_element`.`IBLOCK_SECTION_ID` FROM `b_iblock_element_property`, `b_iblock_element` WHERE b_iblock_element_property.IBLOCK_PROPERTY_ID = 11 AND b_iblock_element_property.VALUE BETWEEN 1119 AND 2544 AND `b_iblock_element`.`IBLOCK_SECTION_ID` = 10 AND `b_iblock_element_property`.`IBLOCK_ELEMENT_ID`=`b_iblock_element`.`ID`) UNION (SELECT DISTINCT `b_iblock_element_property`.`IBLOCK_ELEMENT_ID`, `b_iblock_element_property`.`VALUE`, `b_iblock_element`.`NAME`, b_iblock_element_property.IBLOCK_PROPERTY_ID, `b_iblock_element`.`IBLOCK_SECTION_ID` FROM `b_iblock_element_property`, `b_iblock_element` WHERE b_iblock_element_property.IBLOCK_PROPERTY_ID = 15 AND b_iblock_element_property.VALUE IN(3,4) AND `b_iblock_element`.`IBLOCK_SECTION_ID` = 10 AND `b_iblock_element_property`.`IBLOCK_ELEMENT_ID`=`b_iblock_element`.`ID`) )) AS t1 GROUP BY t1.`IBLOCK_ELEMENT_ID`
Вообщем, проблема в том что не получается сделать выборку только тех записей, которые удовлетворяют обоим условиям:
значение свойства (PROPERTY_ID = 11) - BETWEEN 1119 AND 2544
И
значение свойства (PROPERTY_ID = 15) - VALUE IN(3,4).
Подскажите пожалуйста, как можно сделать такую выборку?
Пытался копать в сторону многотабличных LEFT JOIN, но применительно к этому случаю пока написать запрос не смог(Отредактировано автором: 06 Декабря, 2014 - 18:21:23)
|