是否可以从计数查询中提取信息?
作为在线百科全书的一部分,我将要查询一大堆非常大的数据库表。暂时看起来我必须至少进行三次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'];
}
答案 0 :(得分:1)
我会摆脱伯爵(它的价格也很贵)。然后得到两个领域。如果它们为null,则无需显示任何内容。