|
если использую глобальный фильтр Код |
---|
SEL ECT BE.ID as ID,BE.IBLOCK_ID as IBLOCK_ID,BE.CODE as CODE,BE.XML_ID as XML_ID,BE.NAME as NAME,BE.ACTIVE as ACTIVE,IF(EXTRACT(HOUR_SECOND
FR OM
BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as DATE_ACTIVE_FROM,IF(EXTRACT(HOUR_SECOND
FR OM
BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as DATE_ACTIVE_TO,BE.SORT as SORT,BE.PREVIEW_TEXT as PREVIEW_TEXT,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,BE.DETAIL_TEXT as DETAIL_TEXT,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,DATE_FORMAT(BE.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE,BE.CREATED_BY as CREATED_BY,BE.TAGS as TAGS,DATE_FORMAT(BE.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X,BE.MODIFIED_BY as MODIFIED_BY,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,BE.DETAIL_PICTURE as DETAIL_PICTURE,BE.PREVIEW_PICTURE as PREVIEW_PICTURE,L.DIR as LANG_DIR,BE.XML_ID as EXTERNAL_ID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.XML_ID as IBLOCK_EXTERNAL_ID,B.LID as LID , PRD.TYPE as TYPE, PRD.AVAILABLE as AVAILABLE, PRD.BUNDLE as BUNDLE, PRD.QUANTITY as QUANTITY, IF (PRD.QUANTITY_TRACE = 'D', 'Y', PRD.QUANTITY_TRACE) as QUANTITY_TRACE, IF (PRD.CAN_BUY_ZERO = 'D', 'N', PRD.CAN_BUY_ZERO) as CAN_BUY_ZERO, PRD.MEASURE as MEASURE, IF (PRD.SUBSCRIBE = 'D', 'N', PRD.SUBSCRIBE) as SUBSCRIBE, PRD.VAT_ID as VAT_ID, PRD.VAT_INCLUDED as VAT_INCLUDED, PRD.WEIGHT as WEIGHT, PRD.WIDTH as WIDTH, PRD.LENGTH as LENGTH, PRD.HEIGHT as HEIGHT, PRD.PRICE_TYPE as PAYMENT_TYPE, PRD.RECUR_SCHEME_LENGTH as RECUR_SCHEME_LENGTH, PRD.RECUR_SCHEME_TYPE as RECUR_SCHEME_TYPE, PRD.TRIAL_PRICE_ID as TRIAL_PRICE_ID, PRD.QUANTITY_TRACE as QUANTITY_TRACE_RAW, PRD.CAN_BUY_ZERO as CAN_BUY_ZERO_RAW, PRD.SUBSCRIBE as SUBSCRIBE_RAW, PRD.PURCHASING_PRICE as PURCHASING_PRICE, PRD.PURCHASING_CURRENCY as PURCHASING_CURRENCY, PRD.BARCODE_MULTI as BARCODE_MULTI, PRD.WITHOUT_ORDER as WITHOUT_ORDER
FR OM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
INNER JOIN b_iblock_element_prop_s26 FPS0 ON FPS0.IBLOCK_ELEMENT_ID = BE.ID
left join b_catalog_product as PRD on (PRD.ID = BE.ID)
WHERE
1=1 AND ( (EXISTS ( SEL ECT IBLOCK_ID
FR OM
b_iblock_site
WHERE
IBLOCK_ID = B.ID AND (((SITE_ID='s1'))) )) AND (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM <= now() OR BE.ACTIVE_FROM IS NULL))) AND ((((BE.ACTIVE='Y')))) AND ((((BE.IBLOCK_ID = '26')))) AND ((((FPS0.PROPERTY_520 LIKE '0')))) AND ((( FPS0.PROPERTY_198 IS NULL OR NOT (FPS0.PROPERTY_198 = '3643')))) AND ((((PRD.AVAILABLE='Y')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
ORDER BY
BE.SORT desc ,BE.NAME asc
LIM IT 2
|
если custom Код |
---|
SEL ECT BE.ID as ID,BE.IBLOCK_ID as IBLOCK_ID,BE.CODE as CODE,BE.XML_ID as XML_ID,BE.NAME as NAME,BE.ACTIVE as ACTIVE,IF(EXTRACT(HOUR_SECOND
FR OM
BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as DATE_ACTIVE_FROM,IF(EXTRACT(HOUR_SECOND
FR OM
BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as DATE_ACTIVE_TO,BE.SORT as SORT,BE.PREVIEW_TEXT as PREVIEW_TEXT,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,BE.DETAIL_TEXT as DETAIL_TEXT,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,DATE_FORMAT(BE.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE,BE.CREATED_BY as CREATED_BY,BE.TAGS as TAGS,DATE_FORMAT(BE.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X,BE.MODIFIED_BY as MODIFIED_BY,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,BE.DETAIL_PICTURE as DETAIL_PICTURE,BE.PREVIEW_PICTURE as PREVIEW_PICTURE,L.DIR as LANG_DIR,BE.XML_ID as EXTERNAL_ID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.XML_ID as IBLOCK_EXTERNAL_ID,B.LID as LID , PRD.TYPE as TYPE, PRD.AVAILABLE as AVAILABLE, PRD.BUNDLE as BUNDLE, PRD.QUANTITY as QUANTITY, IF (PRD.QUANTITY_TRACE = 'D', 'Y', PRD.QUANTITY_TRACE) as QUANTITY_TRACE, IF (PRD.CAN_BUY_ZERO = 'D', 'N', PRD.CAN_BUY_ZERO) as CAN_BUY_ZERO, PRD.MEASURE as MEASURE, IF (PRD.SUBSCRIBE = 'D', 'N', PRD.SUBSCRIBE) as SUBSCRIBE, PRD.VAT_ID as VAT_ID, PRD.VAT_INCLUDED as VAT_INCLUDED, PRD.WEIGHT as WEIGHT, PRD.WIDTH as WIDTH, PRD.LENGTH as LENGTH, PRD.HEIGHT as HEIGHT, PRD.PRICE_TYPE as PAYMENT_TYPE, PRD.RECUR_SCHEME_LENGTH as RECUR_SCHEME_LENGTH, PRD.RECUR_SCHEME_TYPE as RECUR_SCHEME_TYPE, PRD.TRIAL_PRICE_ID as TRIAL_PRICE_ID, PRD.QUANTITY_TRACE as QUANTITY_TRACE_RAW, PRD.CAN_BUY_ZERO as CAN_BUY_ZERO_RAW, PRD.SUBSCRIBE as SUBSCRIBE_RAW, PRD.PURCHASING_PRICE as PURCHASING_PRICE, PRD.PURCHASING_CURRENCY as PURCHASING_CURRENCY, PRD.BARCODE_MULTI as BARCODE_MULTI, PRD.WITHOUT_ORDER as WITHOUT_ORDER
FROM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
INNER JOIN b_iblock_element_prop_s26 FPS0 ON FPS0.IBLOCK_ELEMENT_ID = BE.ID
left join b_catalog_product as PRD on (PRD.ID = BE.ID)
WH ERE
1=1 AND ( (EXISTS ( SELECT IBLOCK_ID
FR OM
b_iblock_site
WH ERE
IBLOCK_ID = B.ID AND (((SITE_ID='s1'))) )) AND (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM <= now() OR BE.ACTIVE_FROM IS NULL))) AND ((((BE.ACTIVE='Y')))) AND ( (BE.ID IN ( SELECT FPV0.VALUE_NUM
FR OM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
LEFT JOIN b_iblock_property FP0 ON FP0.IBLOCK_ID = B.ID AND FP0.ID=205
LEFT JOIN b_iblock_property FP1 ON FP1.IBLOCK_ID = B.ID AND FP1.ID=501
LEFT JOIN b_iblock_element_property FPV0 ON FPV0.IBLOCK_PROPERTY_ID = FP0.ID AND FPV0.IBLOCK_ELEMENT_ID = BE.ID
LEFT JOIN b_iblock_element_property FPV1 ON FPV1.IBLOCK_PROPERTY_ID = FP1.ID AND FPV1.IBLOCK_ELEMENT_ID = BE.ID
WH ERE
1=1 AND ( ((((BE.IBLOCK_ID = '27')))) AND (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM <= now() OR BE.ACTIVE_FROM IS NULL))) AND ((((BE.ACTIVE='Y')))) AND ((( FPV1.VALUE IS NULL OR NOT (FPV1.VALUE LIKE 'Y')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL))) AND (((FPV0.VALUE_NUM IS NOT NULL))) )) AND ((((FPS0.PROPERTY_520 LIKE '0')))) AND ((( FPS0.PROPERTY_198 IS NULL OR NOT (FPS0.PROPERTY_198 = '3643')))) ) AND ((((BE.IBLOCK_ID = '26')))) AND ((((PRD.AVAILABLE='Y')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
ORDER BY
BE.SORT desc ,BE.NAME asc
LIM IT 2
|
т.е. если просто фильтр мы получаем Код |
---|
AND ((((BE.IBLOCK_ID = '26')))) AND ((((FPS0.PROPERTY_520 LIKE '0')))) AND ((( FPS0.PROPERTY_198 IS NULL OR NOT (FPS0.PROPERTY_198 = '3643')))) AND ((((PRD.AVAILABLE='Y')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL))) |
а если кастом Код |
---|
AND ( (BE.ID IN ( SELECT FPV0.VALUE_NUM
FR OM
b_iblock B
INNER JOIN b_lang L ON B.LID=L.LID
INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID
LEFT JOIN b_iblock_property FP0 ON FP0.IBLOCK_ID = B.ID AND FP0.ID=205
LEFT JOIN b_iblock_property FP1 ON FP1.IBLOCK_ID = B.ID AND FP1.ID=501
LEFT JOIN b_iblock_element_property FPV0 ON FPV0.IBLOCK_PROPERTY_ID = FP0.ID AND FPV0.IBLOCK_ELEMENT_ID = BE.ID
LEFT JOIN b_iblock_element_property FPV1 ON FPV1.IBLOCK_PROPERTY_ID = FP1.ID AND FPV1.IBLOCK_ELEMENT_ID = BE.ID
WH ERE
1=1 AND ( ((((BE.IBLOCK_ID = '27')))) AND (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND (BE.ACTIVE_FROM <= now() OR BE.ACTIVE_FROM IS NULL))) AND ((((BE.ACTIVE='Y')))) AND ((( FPV1.VALUE IS NULL OR NOT (FPV1.VALUE LIKE 'Y')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL))) AND (((FPV0.VALUE_NUM IS NOT NULL))) )) AND ((((FPS0.PROPERTY_520 LIKE '0')))) AND ((( FPS0.PROPERTY_198 IS NULL OR NOT (FPS0.PROPERTY_198 = '3643')))) ) AND ((((BE.IBLOCK_ID = '26')))) AND ((((PRD.AVAILABLE='Y')))) ) AND (((BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL)))
|
когда просто фильтр, происходит именно фильтрация в уже собранной таблице, а в кастом он собирает получается таблицу, а затем в фильтр вносит новый параметр по которому сортировать (ID) для которых отдельно в пределах того же запроса формирует фильтр. Ух написал и сам боюсь того что написал)) Для некоторых задач, очень нужная вещь - я это отдельной выборкой getList ранее делал, получал список ID и его добавлял в фильтр.
|