0

異なる 2 つのテーブルからプレフィックス PublicImg を持つ画像の数をカウントしたいので、次のコードを使用しました。

    $nb_imgs_a_afficher = $BDD->query("
                                    SELECT COUNT(ID,img_kind) 
                                    FROM images_public  

                                    UNION

                                    SELECT COUNT(ID,img_kind) 
                                    FROM images_users  

                                    WHERE img_kind='PublicImg'");

    $images_users = $nb_imgs_a_afficher->fetch();

しかし、私はこのエラーを受け取ります:

( ! ) 致命的なエラー: キャッチされない例外 'PDOException' とメッセージ
'SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。Near ' in C:\wamp1\www\website\Index_Public_Images\public_images.php 行 72 を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

さて、以前は簡単なテーブルが 1 つありました。

$nb_imgs_a_afficher = $BDD->query("SELECT COUNT(*) AS nb_imgs FROM images_users WHERE img_kind='PublicImg'  ");
4

1 に答える 1

1

まず、そこにタイプミスがあります。2 つの異なるテーブルの使用から行の合計を取得しようとしている場合は、次に変更SLECETします。SELECT

SELECT COUNT(*) FROM (
    SELECT ID,img_kind
            FROM images_public  
            UNION
    SELECT ID,img_kind
            FROM images_users  
            WHERE img_kind='PublicImg' ) x

WHERE両方のクエリに句を含めるつもりだったかどうかはわかりません。WHERE img_kind='PublicImg'その場合は、の前にも追加UNIONします。

また、重複がないか確認してください。ないUNION重複を削除します。UNION ALL

于 2013-09-17T15:42:08.093 に答える