Pergunta

Espero que isso não é uma questão terrivelmente obtuso. Percebo que o MySQL vai deixar-me remeter para o campo "MNTH" no meu grupo e da ordem. Este não é o caso em todos os motores db Eu tenho trabalhado com. Alguém pode confim que esta é uma abordagem OK?

SELECT DATE_FORMAT(FROM_UNIXTIME(`swauditlogs`.`dateline`),'%Y-%m') AS Mnth, Count(`swauditlogs`.`ticketid`) AS Count
FROM swauditlogs LEFT JOIN swtickets ON swauditlogs.ticketid = swtickets.ticketid
WHERE swauditlogs.actionmsg Like 'Ticket status changed from:%to: Closed'
GROUP BY Mnth
ORDER BY Mnth DESC
Foi útil?

Solução

É OK. De http://dev.mysql.com/doc/refman/5.0 /en/select.html :

A select_expr pode ser dado um nome falso usando como alias_name. O alias é usado como o nome da coluna da expressão e pode ser utilizado em GROUP BY, POR ORDEM, ou HAVING.

Eu não gosto disso cláusula LIKE embora. não há outra coluna você pode testar em vez de ter que realizar um COMO em uma corda?

Outras dicas

Isso é aceitável em MySql:

veja aqui: http: // dev.mysql.com/doc/refman/5.1/en/group-by-hidden-columns.html

Note que se você está tentando seguir padrão SQL, você não pode usar expressões em cláusulas GROUP BY. Vocês pode contornar essa limitação, usando um alias para a expressão ...

... o que significa que você pode usar expressões com o MySQL.

Eu não sei sobre nenhum internos do MySQL, mas eu usei uma consulta semelhante em nosso sistema de produção, e até hoje a consulta não caiu ainda. Portanto, este não é resposta de hackers núcleo MySQL, apenas a minha observação.

Ah, esqueci: GARANTIA IMPORTANTE: Só porque eu digo que não vejo pegadinhas, não significa que não há nenhum; -)

IMHO, a consulta parece bem para o MySQL.

padrão SQL não permite referências a aliases de coluna em uma cláusula WHERE, mas você pode usar o alias em GROUP BY, ORDER BY ou HAVING cláusulas para se referir à coluna.

http://dev.mysql.com /doc/refman/5.0/en/problems-with-alias.html

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top