0

次のコードがあります。

$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 つまたは複数の追加が存在する可能性があります。

私はこれまでにこのようなことを試みたことがないので、掘り下げる前に誰かアドバイスがあるかどうか疑問に思いましたか?

4

1 に答える 1

0

これが私の一般的なアプローチです:

$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 ." ;";
于 2013-11-01T16:22:40.880 に答える