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