2016-03-25 6 views
0

Я пытаюсь получить всю информацию о продукте, фильтруя идентификатор категории продукта. Результат должен быть сотнями продуктов, но возвращает только 5 предметов. Что не так с моим запросом?Отфильтровать запрос по ID

SELECT product.id_product, 
product.reference, 
product.price, 
product.active, 
product.quantity, 
product.id_category_default, 
lang.name AS product_name, 
lang.description, 
lang.link_rewrite AS product_link_rewrite, 
category.name AS category_name, 
category.link_rewrite AS category_link_rewrite, 
image.id_image, 
product.id_manufacturer, 
discount.reduction, 
manufacturer.name AS manufacturer_name 
FROM ps_product product 
LEFT JOIN ps_specific_price discount ON discount.id_product=product.id_product 
LEFT JOIN ps_product_lang lang ON lang.id_product=product.id_product 
LEFT JOIN ps_category_lang category ON category.id_category=product.id_category_default 
LEFT JOIN ps_image image ON image.id_product=product.id_product 
LEFT JOIN ps_manufacturer manufacturer ON manufacturer.id_manufacturer=product.id_manufacturer 
WHERE product.active=1 
AND product.quantity>=1 
AND product.id_category_default IN 
(
    4,5,6,65,66,90,91,53,54,48,49,50,55,62,67,68,71,19,82,88,89,87,22,24,26,74, 
    76,77,28,78,79,97,98,99,93,96,35,36,38,39,100 
) 
GROUP BY product.id_product ASC 
+2

Почему вы выполняете группу без агрегата? Возможно, вы имеете в виду «ЗАКАЗАТЬ». (другими словами ... Получают ли вы желаемые результаты, если вы удаляете группу?) Я удивлен, что вы не получаете синтаксическую ошибку с 'ASC' в конце группы. Как mySQL расширяет предложение group by может вызвать вашу проблему – xQbert

+0

Изменено ORDER BY, те же результаты ... Еще одно предложение? Спасибо .. –

+0

Тогда ожидаемые результаты являются неточными бы моя догадка запустить 'SELECT COUNT (*) из ps_product продукта WHERE product.active = 1 И product.quantity> = 1 И product.id_category_default В ( 4,5, 6,65,66,90,91,53,54,48,49,50,55,62,67,68,71,19,82,88,89,87,22,24,26,74, 76 , 77,28,78,79,97,98,99,93,96,35,36,38,39,100 ); 'если count соответствует количеству строк вашего запроса, ожидаемые результаты неверны. Если они отличаются друг от друга ... Я просто не понимаю, как это возможно ... Можете ли вы предоставить продукт с активным 1 количеством> = 1 и чей ID_Category_Default находится в вашем списке, но не в результатах? – xQbert

ответ

0

Может быть как-то просто, как:

GROUP BY product.id_product ASC должно быть: ORDER BY product.id_product ASC

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

If ONLY_FULL_GROUP_BY is disabled, a MySQL extension to the standard SQL use of GROUP BY permits the select list, HAVING condition, or ORDER BY list to refer to nonaggregated columns even if the columns are not functionally dependent on GROUP BY columns. ... The server is free to choose any value from each group, so unless they are the same, the values chosen are indeterminate, which is probably not what you want.

Варианта:

  • группа изменения по заказу на
  • добавить все столбцы в группу
  • не использует группу, вообще.