来自三个表的SQL查询,使用第一个表的结果

时间:2013-06-11 14:58:14

标签: sql sql-server

我遇到来自多个表的查询有问题。我的平台是SQL。每个表的前两列(ID,Tag)彼此相关。我试图使用table1的结果从table2和table3中选择数据。

Table1.ID, Tag, Top Weight, Bottom Weight, Total Weight Table2.ID, Tag, Color, Shade, Tint, Transparancy Table3.ID, Tag, Sequence, Length, Width, Height

表1用于确定ID和标签。 ID和Tag的组合对于此表是唯一的。 table1中没有空值。在此示例中,我将使用最高权重和最低权重搜索ID和标记。但是,可以使用任意数量的标准来查找ID和标记。

SELECT ID, Tag FROM table1 WHERE Top Weight = '22' AND Bottom Weight = '44'

Table1 query results

我想从table1获取ID和Tag结果,并将它们用于我的table2和table3查询。对于table2,前两列(ID,Tag)的组合是唯一的。我想从这张表中选择Color,Shade和Tint。这些列可以有空值。对于table3,前三列(ID,Tag,Sequence)的组合是唯一的。我想从这个表中选择Sequence,Length和Width。这些列也可以具有空值。

是否可以将所有三个表合并为一个查询,并使用第一个表的结果来获取第二个和第三个表的结果?示例表只有14行,但实际上有数万行 - 因此性能至关重要(何时不是?)。我期待着你的回复,谢谢。

1 个答案:

答案 0 :(得分:1)

这看起来像一个相当简单的外连接查询:

select t1.id, t1.tag,
       t2.Color, t2.Shade, t2.Tint,
       t3.Sequence, t3.Length, t3.Width
from table1 t1 
left join table2 t2 on t1.id = t2.id and t1.tag = t2.tag
left join table3 t3 on t1.id = t3.id and t1.tag = t3.tag
WHERE t1.[Top Weight] = '22' AND t1.[Bottom Weight] = '44'
相关问题