Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Moraes

Erro na consulta por id

Recommended Posts

Minha consulta de produtos só retorna 5 itens, sendo que existem centenas no banco. Segue a consulta:

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

Alguém pode me indicar o erro? Obrigado desde ja.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os produtos atendem a condição active=1 product.quantity>=1 product.id_category_default na lista passada ?

 

Os tipos dos campos "batem" com os tipos da condição do "where" ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, tenho centenas de produtos no banco que atendem a essas condições. Os tipos dos campos da condição são todos INT. Acredito que o erro está na condição product.id_category_default, talvez na associação do produto a categoria mas eu não identifiquei nenhum erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) pq o GROUP BY product.id_product ASC

 

2) neste casso eu faço um select *

para um produto aleatorio (que deveria sair)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verdade o GROUP BY não faz sentido nesse caso, removi mas mesmo assim não resolveu.

 

Alguns produtos saem outros não..a consulta deveria retornar mais de duzentos produtos mas retorna 5.

 

Esse left join na categoria que não esta indo eu acho..mas não sei onde esta o erro..

 

Preciso juntar a tabela category_lang (tabela das categorias) e pegar a linha onde o campo id_category_default (tabela dos produtos) bate com o campo id_category (tabela das categorias) e filtrar para que apareça somente as categorias no WHERE IN (...)

 

Se eu tirar a condição WHERE IN me retorna todos os produtos do banco normalmente..

 

Alguma idéia do que esta errado?

 

Obrigado pela atenção

 


Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique :

 

product.active

product.quantit

product.id_category_default

 

Tipos e valores testados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim , veja se os tipos dos campos é compatível com o valor buscado no WHERE.

 

Exempo :

 

product.active é CHAR(2) com o conteúdo do tipo '01' , '02'

, testar como =1 não localiza , pouca chance de ser mas algo a olhar já que está "dando ruim"

 

O suspeito no caso seria o product.id_category_default

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim os tipos são compatíveis:

 

active tinyint(1) id_category_default int(10) quantity int(10)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vejamos, qual o resultado das queries abaixo.

SELECT id_category_default
FROM ps_product
WHERE 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 id_category_default;

SELECT id_category
FROM ps_category_lang
GROUP BY id_category;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.