Я получаю сообщение об ошибке в php. Каков правильный способ форматирования этой строки для перехода к mysql_query() в php?Переменные MySql и 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;
В PHP, вот как я создал $ запрос
$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";
Это точный запрос будет работать нормально, если я положил его прямо в MySql с помощью командной строки сессии. Нужно ли мне выдавать два отдельных php-вызова в mysql_query() и сохранять первый результат?
Я получаю ошибку ниже:
У Вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'SELECT user_agent_parsed, user_agent_original, COUNT (user_agent_parsed) AS thecount' по строке 3
Причина, по которой вы не используете суб-выбор и вместо этого выбираете MySql переменная заключается в том, чтобы избежать вычисления count() при каждом процентном вычислении. Хотя это может быть возможно, двигатель оптимизирует для этого. До сих пор я не смог это подтвердить. Я также слышал, что подвыборы почти всегда не оптимальны.
EXPLAIN говорит мне это:
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