array(1) { [0]=> array(3) { ["errno"]=> int(1064) ["sqlstate"]=> string(5) "42000" ["error"]=> string(227) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') INNER JOIN `m_filters` f1 ON f1.PropValue=up1.PropValue AND f1.FType=' at line 22" } } string(4024) " SELECT DISTINCT g.NumOrder, g.ItemId, g.Nabor, g.FotoId, g.Local, g.Back, g.`Type`, g.`Typeua`, g.`Brand`, g.`Color`, g.`Colorua`, g.avail, s.cnt, s.size1, s.size2, g.`GoodNameTranslit`, g.`GoodNameTranslitua`, g.GoodName, g.GoodNameua, g.`GoodFotoName`, g.`GoodFotoNameua`, g.Model, g.price, g.detail_price, g.`minprice`, g.`action_price`, x.qty, 1 AS discount, 1 AS discount2, 0 AS special_price, 0 AS special_price2, g.last_dt_otgr, IF(g.Nabor=1, (SELECT MinPropValue FROM `m_filters_sizes2` WHERE ItemId=g.`ItemId` AND Nabor=1 AND `PartNum`=1 AND FType IN (4, 5, 6, 7, 8) LIMIT 0, 1), (SELECT MinPropValue FROM `m_filters_sizes2` WHERE ItemId=g.`ItemId` AND Nabor=0 AND `PartNum`=0 AND FType IN (4, 5, 6, 7, 8) LIMIT 0, 1)) AS MinPropValue, IF(g.Nabor=1, (SELECT MinPropValue FROM `m_filters_sizes2` WHERE ItemId=g.`ItemId` AND Nabor=1 AND `PartNum`=2 AND FType IN (4, 5, 6, 7, 8) LIMIT 0, 1), 0) AS MinPropValue2 FROM m_main_table2 g /* весь товар */ INNER JOIN `m_goodscategory2` gc ON gc.ItemId=g.ItemId AND gc.IsNabor=g.Nabor AND gc.`CategoryId` = 32 INNER JOIN ( SELECT gcf.`itemID`, gcf.`IsNabor` FROM `m_goodscondfilters2` gcf INNER JOIN `m_goodscondfilters2` gcf1 ON gcf1.`ItemID`=gcf.`ItemID` AND gcf1.`IsNabor`=gcf.`IsNabor` AND gcf1.`FType`=28 AND gcf1.`FOrder` IN (0,1) /* 3 */ /* условными фильтрами */ ) gcf ON gcf.itemID=g.itemID AND gcf.IsNabor=g.Nabor INNER JOIN( SELECT up1.ItemId, up1.Nabor, COUNT(*) AS cnt, MIN(f1.FSite) AS size1, MIN(f2.FSite) AS size2 FROM `m_filters_sizes` up1 # cnt = 1 только если один размер верха соответствует одному размеру низа INNER JOIN `m_filters_sizes` dn2 ON dn2.ItemId=up1.ItemId AND dn2.Nabor=1 AND dn2.PartNum=2 AND ( ) INNER JOIN `m_filters` f1 ON f1.PropValue=up1.PropValue AND f1.FType=up1.FType INNER JOIN `m_filters` f2 ON f2.PropValue=dn2.PropValue AND f2.FType=dn2.FType WHERE up1.Nabor=1 AND up1.`PartNum`=1 AND ( (up1.FType=12 AND up1.MinPropValue IN (2))) # задаем только фильтры, доступные для данной категории GROUP BY up1.ItemId, up1.Nabor # это чтобы определить количества в урезанных размерами UNION SELECT up1.ItemId, up1.Nabor, COUNT(*) AS cnt, MIN(f1.FSite) AS size1, '' AS size2 FROM `m_filters_sizes` up1 # cnt = 1 только если один размер верха соответствует одному размеру низа INNER JOIN `m_filters` f1 ON f1.PropValue=up1.PropValue AND f1.FType=up1.FType WHERE up1.Nabor=0 AND up1.`PartNum`=0 AND (( (up1.FType=12 AND up1.MinPropValue IN (2))) # задаем только фильтры, доступные для данной категории, один из этого точно будет OR ( )) # для товара используем оба фильтра GROUP BY up1.ItemId, up1.Nabor # это чтобы определить количества в урезанных размерами ) s ON s.ItemId=g.ItemId AND s.Nabor=g.Nabor LEFT OUTER JOIN ( SELECT SUM(`qty`) AS qty, `Prop4ID` FROM `orderspos` GROUP BY `Prop4ID` ) x ON x.Prop4Id=g.ItemId WHERE ( g.colorId IN /* атрибутивными фильтрами - цветом */ ( SELECT PropValue FROM m_filters2 WHERE FType=9 AND FSite IN (SELECT FSite FROM m_filters2 WHERE FType=9 AND MinPropValue IN (13)) ) OR g.colorId=0 /* атрибутивными фильтрами - отсутствием цвета */ ) ORDER BY g.avail ASC, x.qty "