1

Tenho o seguinte código em php:

$sql = "SELECT * FROM musicas_curtidas 
    GROUP BY musica 
    ORDER BY count(musica) 
    WHERE musica != 'Rádio Turn - Você em primeiro lugar!' AND
    WHERE musica != 'Radio Turn - Não importa o seu estilo! #2' AND
    WHERE musica != 'Radio Turn - Não importa o seu estilo!' AND
    WHERE musica != 'Rádio Turn - Comercial' AND
    WHERE musica != 'Rádio Turn - Na Balada'
    DESC LIMIT 3";    

Está me retornando um erro:

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 'WHERE musica != 'Rádio Turn - Você em primeiro lugar!' AND ' at line 4

Como posso resolver isso? Sou novato em php.

1 Resposta 1

5

Antes de mais nada, PHP não tem nada a ver com o assunto, esse é um erro de SQL.

  • A cláusula Where é uma só
  • O Agrupamento depois
  • O Order vem depois
  • E o limite no fim

Se tiver dúvidas ao montar uma query, o Manual é uma boa referência, mesmo caso não tenha facilidade em inglês, tem os exemplos e descrição da sintaxe já na ordem certa:

https://dev.mysql.com/doc/refman/5.7/en/select.html

Provavelmente teria como melhorar a lógica usada, mas pelo que pôs na pergunta, esses 4 pontos seriam os primeiros a resolver.

SELECT *

FROM  musicas_curtidas 

WHERE musica != 'Rádio Turn - Você em primeiro lugar!'
      AND musica != 'Radio Turn - Não importa o seu estilo! #2'
      AND musica != 'Radio Turn - Não importa o seu estilo!'
      AND musica != 'Rádio Turn - Comercial' 
      AND musica != 'Rádio Turn - Na Balada'

GROUP BY musica 

ORDER BY count(musica) DESC

LIMIT 3

Poderia simplificar para

SELECT *

FROM  musicas_curtidas 

WHERE musica NOT IN (
   'Rádio Turn - Você em primeiro lugar!',
   'Radio Turn - Não importa o seu estilo! #2',
   'Radio Turn - Não importa o seu estilo!',
   'Rádio Turn - Comercial',
   'Rádio Turn - Na Balada'
)

GROUP BY musica 

ORDER BY count(musica) DESC

LIMIT 3
3
  • @PauloSérgioFilho perfeito, se tiver alguma duvida extra, só comentar (ou se for algo de assunto separado, abrir uma nova pergunta)
    – Largato
    Commented 10/01/2017 às 1:46
  • É possivel adicionar um WHERE para outra coluna? Por exemplo, WHERE imagem NOT IN ('...'), as duas ao mesmo tempo, musica e imagem. Commented 10/01/2017 às 1:49
  • @PauloSérgioFilho pode fazer as combinações que quiser, mas com um WHERE só. Exemplo: SELECT nota FROM notas WHERE nota IN ( "a", "b", "c") AND aluno_nome = "Roberto"; Ou seja, vai trazer somente quando o nome for Roberto e a nota a, b ou c
    – Largato
    Commented 10/01/2017 às 1:59

Você deve fazer log-in para responder a esta pergunta.

Esta não é a resposta que você está procurando? Pesquise outras perguntas com a tag .