php - 在 COUNT 查询上传递静态值 (PHP/MySQL)

标签 php mysql sql

我对各个部分和网站(例如 MySite/World、MySite2/World、MySite3/People)有一系列查询。它实际上是两个系列的查询 - 显示页面的 COUNT 查询和从我的数据库检索信息的更复杂的查询。

我现在正在将这些项目合并到新网站上的一个迷你百科全书中。下面的查询来自另一个不同但相关的项目,但它说明了我正在尝试做的事情。请注意,我为每个表中的数据提供了自己的标识,包括“GW”AS 站点、“GZ”AS 站点等。

$stm = $pdo->prepare("SELECT 'GW' AS Site, CGW.N, CGW.URL, CGW.Date, CGW.Year, CGW.Brief
FROM calendar_gw CGW
WHERE CGW.URL = :MyURL
UNION ALL
SELECT 'GZ' AS Site, CGZ.N, CGZ.URL, CGZ.Date, CGZ.Year, CGZ.Brief
FROM calendar_gz CGZ
WHERE CGZ.URL = :MyURL
ORDER BY Year");
$stm->execute(array(
'MyURL'=>$MyURL
));

现在我想知道是否有一种方法可以为 COUNT 查询中的多个表提供类似的 ID,如下所示:

$sql = "SELECT SUM(num) as num FROM (
SELECT COUNT(URL) AS num FROM pox_topics WHERE URL = :MyURL
UNION ALL
SELECT COUNT(URL) AS num FROM people WHERE URL = :MyURL
UNION ALL
SELECT COUNT(Taxon) AS num FROM gz_life WHERE Taxon = :MyURL
) AS X";

我实际上想给每个子查询两个 ID - 网站和部分。例如,中间查询的值应为 $Site = 'PX', $Section = 'People'。

我尝试过明显的解决方案,例如......

SELECT 'PX' AS Site COUNT(URL) AS num FROM people WHERE URL = :MyURL

SELECT COUNT(URL) AS num 'PX' AS Site FROM people WHERE URL = :MyURL

SELECT COUNT(URL) AS num FROM 'PX' AS Site people WHERE URL = :MyURL

但到目前为止还没有任何效果。我的最终目标可能是这样的:

SELECT COUNT(URL) AS num FROM people ('PX' AS Site 'People' AS Section) WHERE URL = :MyURL

有人可以向我展示正确的语法或告诉我是否无法在 COUNT 查询上传递静态值吗?如果我想要做的事情是不可能的,那么我认为唯一的解决方案是创建第二个中间子查询,仅设计用于传递静态值。

最佳答案

你的第一个版本几乎没问题。它只需要一个逗号:

SELECT 'PX' AS Site, COUNT(URL) AS num
FROM people
WHERE URL = :MyURL;

关于php - 在 COUNT 查询上传递静态值 (PHP/MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21225348/

相关文章:

c# - 使用 Windows 窗体 C# 向 Mysql 数据库添加值

mysql - 如何选择一个值然后更新字段

SQL 直方图 : Greater than 10 orders group as "10+ bucket"

mysql - 计算每年的运行事件总数以及跨多年的事件

php - 蒙戈 : $or query looking for multiple possible values in the same field

PHP无法获取帖子数据

mysql - 根据列的总和计算加类时间

mysql - 比较两个数据库表

php - 如何编写 PHP 工作进程代码?

php - 如何从 INSERT 中的两个输入获取值?