具有不匹配字段的多表查询

时间:2016-02-25 21:09:01

标签: php mysql

我有一个多表查询,为每个表提取值“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 AND G1 = 1

换句话说,除非值“URL”与页面的URL匹配且字段G1的值为1,否则不会显示页面。

问题是我的很多桌子都没有G1字段。我想在那些特定的表格中显示所有内容。

有没有办法修改我的查询,以便1)具有名为G1的字段的表中的行不显示,除非G1的值为1,2)来自没有命名字段的表的行G1还会显示?

1 个答案:

答案 0 :(得分:3)

你工会里的

  1. 在具有G1列的表上,将其添加到select语句
  2. 在没有的表格上,只需添加1 as G1
  3. 现在你有一个G1列,就像你想要的那样 - 来自表格的表格,你将从表格中获得价值。在你没有的表格上 - 它在所有行上都是1,因此它总是按你想要的那样选择。

    之后,您可以添加到外部where语句AND G1 = 1