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

时间:2014-01-20 02:29:51

标签: 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查询上传递静态值?如果我想要做的是不可能的,那么我假设唯一的解决方案是创建一个仅用于传递静态值的第二个中间子查询。

1 个答案:

答案 0 :(得分:1)

你的第一个版本很好,差不多。它只需要一个逗号:

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