0

我想从不同的两个表中计算带有前缀 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 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 72 行的 C:\wamp1\www\website\Index_Public_Images\public_images.php 中的 ' 附近使用正确的语法

好吧,在我有一张很容易使用的桌子之前:

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

1 回答 1

1

首先,你有一个错字。更改SLECETSELECT,然后如果您尝试从两个不同的表中获取行的总和,请使用 -

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 回答