将From语句添加到Join语句

时间:2018-06-28 13:19:20

标签: sql sql-server

因此该代码具有多个join语句,我需要添加的只是一个where子句,该子句检查一个值。我需要参考的表未在包含多个联接的From语句中使用。无论如何,有没有添加常规FROM语句而不会破坏JOINS

SELECT    D.data
          H.otherData
FROM
          Dada AS D
JOIN      Haha AS H
          ON D.ID = H.ID
WHERE    
          C.Value = x --This is what I want to do. Can I add another from statement that doesn't affect the join statement

2 个答案:

答案 0 :(得分:3)

如果不在某处包含C,则不可能。

您所说的等同于“列出此人被称为汤姆的所有国家/地区”

答案 1 :(得分:0)

您可以添加C表,但该表必须带有JOIN。也许您想要一个CROSS JOIN,它是联接表与此新表C的笛卡尔积,并且不需要任何条件(您可以使用WHERE条件过滤结果)

SELECT    D.data
          H.otherData
FROM
          Dada AS D
JOIN      Haha AS H
          ON D.ID = H.ID
CROSS JOIN C
WHERE    
          C.Value = x 

在这种情况下,它与以下情况相同:

SELECT    D.data
          H.otherData
FROM
          Dada AS D
JOIN      Haha AS H
          ON D.ID = H.ID
JOIN      C
          ON C.Value = x 

如果要根据JOIN中的值过滤第一个C,则需要将条件放在WHERE上的子查询中,例如INEXISTS。您的第一个JOIN与该表C之间必须有某种关联(一个列或一个表达式都共享),否则过滤就没有意义了。

例如:

SELECT    D.data
          H.otherData
FROM
          Dada AS D
JOIN      Haha AS H
          ON D.ID = H.ID

WHERE     EXISTS (SELECT 'value exists on table C' FROM C WHERE C.Value = D.data)