可以从COUNT个查询中提取信息吗?

时间:2015-10-07 22:37:48

标签: php mysql

是否可以从计数查询中提取信息?

作为在线百科全书的一部分,我将要查询一大堆非常大的数据库表。暂时看起来我必须至少进行三次UNION ALL查询。

第一个查询是COUNT查询,用于确定URL是否与我的数据库中的值匹配,因此应显示页面。第二个查询可能会针对每个表上的字段URL,看起来像这样:

SELECT URL, 'World' AS MySection, 'GW' AS MySiteID

这允许我为每个数据库表分配一个网站和部分ID。然后,第三个查询将具有相同网站和/或部分ID的表组合在一起,并查询它们以获取其他信息。

无论如何,我想知道是否可以通过在我的计数查询中分配网站和部分ID来消除第二个查询。我认为答案是否定的,但我认为我在某处可以看到它可以完成。任何人都可以告诉我该怎么做,或者这是一个失败的原因?我在下面这样做的方式并没有明显的原因。

$sql = "SELECT
 SUM(num) AS num
FROM
(
 SELECT COUNT(URL) AS num, 'World' AS MySection, 'GW' AS MySiteID, gw_geog.`URL` as URL  
 FROM gw_geog
 WHERE URL = :MyURL AND G1 = 1
 UNION ALL
 SELECT COUNT(URL) AS num, 'World' AS MySection, 'GW' AS MySiteID, gw_geog_political.`URL` as URL
 FROM gw_geog_political
 WHERE URL = :MyURL
) AS X
WHERE X.URL like  :MyURL
LIMIT 1";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':MyURL',$MyURL,PDO::PARAM_STR);
$stmt->execute();
$Total = $stmt->fetch();

while ($row = $stm->fetch())
{
 $MySiteID = $row['MySiteID'];
 $MySection = $row['MySection'];
}

1 个答案:

答案 0 :(得分:1)

我会摆脱伯爵(它的价格也很贵)。然后得到两个领域。如果它们为null,则无需显示任何内容。