MySQL Multi Query - построение дополнительных параметров SQL
У меня есть следующий код:
$query .= "SELECT COUNT( ". $r ." ) AS Total,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." >=750) AS Eng,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." >=450 AND ". $r ." <=749) AS Pas,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." <=449) AS Dis
FROM tresults;";
Это многопользовательский запрос, и с помощью PHP я могу просмотреть несколько экземпляров и получить данные обратно - это нормально.
Однако, что мне нужно сделать, это легко добавить дополнительные параметры в запрос SQL на основе данных, вводимых пользователями из выпадающих меню.
Так, например, пользователь может выбрать параметр из выпадающего списка, а затем его необходимо добавить к запросу SQL, например:
$query .= "SELECT COUNT( ". $r ." ) AS Total,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." >=750 AND q16 = 'Yes') AS Eng,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." >=450 AND ". $r ." <=749 AND q16 = 'Yes') AS Pass,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." <=449 AND q16 = 'Yes') AS Dis
FROM tresults WHERE q16 = 'Yes';";
Там может быть одно приложение, как указано выше, или несколько.
Я не пытался ничего подобного раньше, поэтому я хотел бы знать, есть ли у кого-нибудь совет, прежде чем я углублюсь?
1 ответ
Вот мой общий подход:
$filter = "AND q16 = 'Yes'"; //This value is dynamic depending on dropdown selection
$query .= "SELECT COUNT( ". $r ." ) AS Total,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." >=750 " . $filter ." ) AS Eng,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." >=450 AND ". $r ." <=749 " . $filter ." ) AS Pass,
(SELECT COUNT( ". $r ." ) FROM tresults WHERE ". $r ." <=449 " . $filter ." ) AS Dis
FROM tresults WHERE 1=1 " . $filter ." ;";