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

Respuestas a la pregunta(2)

Su respuesta a la pregunta