0

4回のクエリを避けるために、1つのクエリでフィールドから集計を収集しようとするクエリがあり、それらすべてを1つのクエリに追加しました。

しかし、私はこのエラーが発生しています:

SQLSTATE[42000]: Syntax error or access violation: 1064
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near

           ')) as english,
            sum(if(class='2')) as science,
            sum(if(class='3')) as french 
            F' at line 3

このための構文がどのように意図されているのかわからないので、誰かが知っていることを願っていました...私のクエリは次のとおりです。

$stmt = $pdo->prepare("SELECT 
            count(id) AS total, 
            sum(if(class=?)) as english,
            sum(if(class=?)) as science,
            sum(if(class=?)) as french 
            FROM school");

    try{
        $stmt->execute(array(1,2,3));
    } catch (PDOException $e){
        echo $e -> getMessage();  exit;
    }   

これの正しい構文を知っている人はいますか?

4

1 に答える 1

1

少なくとも、各合計行の右括弧を見逃しています。

それから、 if(..,..,..) 文についてよくわからないので、通常は CASE WHEN (条件) THEN expr1 ELSE expr2 END と書きます。

于 2012-10-02T04:45:27.580 に答える