2016-03-25 16 views
0

Ürün bilgileri kimliğine göre filtreleme yaparak tüm ürün bilgilerini almaya çalışıyorum. Sonuç yüzlerce ürün olmalı, ancak sadece 5 ürün döndürür. Sorgumun nesi yanlış?Filtre sorgusu ID ile

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

Neden bir grup bir araya getirmeden gerçekleştiriyorsunuz? Belki de 'SİPARİŞ BY' demek istiyorsun. (diğer bir deyişle ... Eğer grubu ortadan kaldırırsanız istenilen sonuçları alır mısınız?) Bir grubun sonunda 'ASC' ile bir sözdizimi hatası almadığınıza şaşırdım. MySQL, grup tarafından yan tümce nedenleri sorununuzu neden olabilir – xQbert

+0

ORDER BY olarak değiştirildi, aynı sonuçlar ... Başka bir emme? Teşekkür .. –

+0

Sonra beklenen sonuçlar ps_product üründen benim tahminim çalıştırmak 'select count (*) olacaktır yanlıştır NEREDE 1 = product.active VE product.quantity> = 1 VE product.id_category_default ( 4,5 İÇİNDE, 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 ); Eğer sayım, sorgunuzun satır sayısıyla eşleşirse, beklenen sonuçlar yanlıştır. Farklılarsa .... Nasıl olduğunu göremiyorum ... Aktif olan 1 miktar> = 1 olan ve ID_Category_Default listenizde bulunan ancak sonuçlarda olmayan bir ürün sağlayabilir misiniz? – xQbert

cevap

0

Belki bir şey gibi basit:

GROUP BY product.id_product ASC olması gerekir: değil grubunda herhangi sütunlar belirsiz bir değer elde edebilir, böylece ORDER BY product.id_product ASC

mySQL maddesi ile grup uzanır.

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.

Seçenekler:

  • tarafından sipariş tarafından

    • değişim grubunun en herkes tarafından grubunu kullanmayın
    • göre gruplandırmak tüm sütunları ekleyin.