Variáveis MySql e php
Estou recebendo um erro com isso no php. Qual é a maneira correta de formatar esta string para passar para mysql_query () no php?
SELECT count(*) FROM agents INTO @AgentCount;
SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount,
COUNT( * ) / ( @AgentCount) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50;
Em php, aqui está como eu configurei o $ query
$query = "
SELECT count(*) FROM agents INTO @AgentCount;
SELECT user_agent_parsed, user_agent_original, COUNT( user_agent_parsed ) AS thecount,
COUNT( * ) / ( @AgentCount) AS percentage
FROM agents
GROUP BY user_agent_parsed
ORDER BY thecount DESC LIMIT 50";
Essa consulta exata funcionará bem se eu colocá-lo diretamente no MySql através de uma sessão de linha de comando. Preciso emitir duas chamadas php separadas para mysql_query () e armazenar o primeiro resultado?
Eu estou recebendo o erro abaixo:
Você tem um erro na sua sintaxe SQL; verifique o manual que corresponde à sua versão do servidor MySQL para a sintaxe correta para usar perto de 'SELECT user_agent_parsed, user_agent_original, COUNT (user_agent_parsed) como a conta' na linha 3
A razão para não usar uma sub seleção e escolher uma variável MySql é evitar que uma count () aconteça em cada cálculo de porcentagem. Embora seja possível, o mecanismo está otimizando para isso. Até agora, não consegui confirmar isso. Eu também ouvi que sub seleções quase sempre não são ótimas.
EXPLAIN me diz isso:
id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY agents index NULL user_agent_parsed 28 NULL 82900 Using temporary; Using filesort 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away