我有一个多表查询,它获取每个表的值“URL”(或别名“Taxon”)。它还为“MySiteID”和“MySection”创建值。

SELECT URL, 'GW' AS MySiteID, 'Topics' AS MySection FROM   $DBWorld.gw_topics
UNION ALL
SELECT Taxon AS URL, 'GZ' AS MySiteID, 'Life' AS MySection FROM $DBLife.gz_life_kingclass

最后一行如下:
SELECT TopicURL AS URL, 'GS' AS MySiteID, 'Topics' AS MySection FROM  $DBSymbols.gs_top_ref
) AS Combined
WHERE Combined.URL LIKE :MyURL

我想修改最后一行,使其显示WHERE Combined.URL like:MyURL和G1=1
换句话说,除非值“URL”与页面的URL匹配,并且字段G1的值为1,否则不会显示页面。
问题是我的许多表没有字段G1。我想把所有的东西都放在那些特别的桌子上。
是否有方法可以修改我的查询,以便1)除非G1的值为1,否则不显示具有字段G1的表中的行,以及2)也显示不具有字段G1的表中的行?

最佳答案

在你的工会中:
在具有G1列的表上,将其添加到select语句中
在没有的表上,只需添加1 as G1
现在您已经有了一个G1列,就像您想要的那样-在表上它来自表,您将从表中获得值。在您不需要的表上-它将在所有行上都是1,因此它总是按您的需要进行选择。
之后,您可以添加到外部where语句AND G1 = 1

关于php - 字段不匹配的多表查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35638385/

10-12 05:35