Variables MySQL y php
Estoy recibiendo un error con esto en php. ¿Cuál es la forma correcta de formatear esta cadena para pasarla a mysql_query () en 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;
En PHP, aquí es cómo configuro la consulta $
$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";
Esa consulta exacta funcionará bien si la puse directamente en MySql a través de una sesión de línea de comandos. ¿Debo emitir dos llamadas php separadas a mysql_query () y almacenar el primer resultado?
Estoy recibiendo el siguiente error:
Tienes un error en tu sintaxis SQL; consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'SELECT user_agent_parsed, user_agent_original, COUNT (user_agent_parsed) AS thecount' en la línea 3
La razón para no usar una selección secundaria y, en su lugar, elegir una variable MySql es evitar que ocurra un conteo () en cada cálculo de porcentaje. Aunque es posible que el motor se esté optimizando para eso. Hasta ahora, no he podido confirmar eso. También he escuchado que las subselecciones casi siempre son no óptimas.
Explicación me dice esto:
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