• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

psiico

[Ajuda]MySQL query + AND

3 mensagens neste tópico

Boas pessoal,

Eu tenho uma tabela que guarda uma lista de downloads, e eu com uma query quero ir buscar vários downloads com várias categorias diferentes, a query que tenho neste momento é:

ELECT * FROM downloads_list where published="1" AND category="N70" AND category="N72" AND category="N90" AND category="3230" AND category="6600" AND category="6630" AND category="6680" AND category="6260" AND category="6670" AND category="6681" AND category="6682" AND category="7610" and approved="1" order by title asc

Mas isto com o AND nao funciona, eu ja experimentei ir buscar categoria a categoria e funciona mas com o AND nao puxa os dados.

Alguem já teve o mesmo problema?

Obrigado desde já.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se percebi, queres todas os dados cujas categorias sejam algumas dos valores que indicastes. Ora o que estás a fazer é pedir os dados que tenham a categoria igual a N70 e ao mesmo tempo igual a N72, suponho que só possa ter uma categoria e não duas.

Basicamente estás a dizer "dá-me os downloads que cuja categoria seja, simultaneamente, N70 e N72", como vês, está errada a forma de pensar. Para resolver isso, ou substituis alguns AND por OR ou usas o IN.

SELECT * 
FROM downloads_list 
WHERE published="1" AND (category="N70" OR category="N72" OR category="N90" 
    OR category="3230" OR category="6600" OR category="6630" OR category="6680" 
    OR category="6260" OR category="6670" OR category="6681" OR category="6682" 
    OR category="7610")  AND approved="1"
ORDER BY title ASC

ou

SELECT *
FROM downloads_list
WHERE published="1" AND category IN("N70", "N72", "N90", "3230", "6600", "6630",  "6680", "6260", "6670", "6681", "6682", "7610") 
    AND approved="1"
ORDER BY title ASC

Poderão existir alternativas mais correctas, dependendo do que estás a fazer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yah foi como eu tive q fazer. com o in e depois fazer uma segunda query lá dentro com os OR ficou algo como:

ELECT * FROM jos_downloads_list where category IN(SELECT category FROM jos_downloads_list WHERE category="N70" OR category="N72" OR category="N90" OR category="3230" OR category="6600" OR category="6630" OR category="6680" OR category="6260" OR category="6670" OR category="6681" OR category="6682" OR category="7610" ) AND approved="1" and published="1" ORDER BY title ASC

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora