来自不同表mySQL的多个SELECT COUNT

时间:2013-09-17 15:32:06

标签: mysql sql count

我想从不同的两个表中计算带有前缀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'  ");

1 个答案:

答案 0 :(得分:1)

首先,你有一个错字。将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则不会。