使用Inner join在多个表中创建SQL表

时间:2015-05-29 01:27:30

标签: mysql

表(我还添加了每个表的关键字段):

-tblproperty : propertyid,地址

-tblpropertyassetclass : propertyassetclassid

-tblpropertyassetclass_property_mapping : propertyassetclassid,propertyid

-tblcompdetails : mlsnumber,approved_comps

-tblmls_add_derived : mlsnumber,propertyaddress

目标:是找到tblpropertyassetclass中特定propertyassetclassid中的所有地址,其approved_comps值是什么。

SELECT address 
FROM   properties.tblpropertyassetclass_property_mapping a 
       INNER JOIN properties.tblproperty b 
               ON a.propertyid = b.propertyid 
WHERE  propertyassetclassid = 3 

我创建的此查询获取给定propertyassetclassid的所有地址(在本例中为3)。我可以获得approved_comps的唯一方法是,如果我有mlsnumber,我没有。所以我需要在tblmls_add_dervived中将地址与地址匹配以获取mlsnumber。然后使用该mlsnumber获取approved_comps。

有人可以帮助我。我不知道如何让这件事发生。

所以让我们说上面的查询给出了2个地址 罂粟街25号 苹果街1234号 对于每个地址我想知道它的approved_comps值

SELECT approved_comps
FROM properties.tblcompdetails a
       INNER JOIN properties.tblmls_add_derived b 
            ON a.mlsnumber = b.mlsnumber  
WHERE propertyaddress LIKE '%707 Country Aire%'

我能够创建此查询,但这是针对特定的查询。如何将两个查询一起加入?

1 个答案:

答案 0 :(得分:1)

tblcompdetailstblmls_add_derived连接到查询需要2个额外的内部联接。注意:使用别名来显式定义我们在查询中使用的每个列。如果没有明确定义哪个列来自哪个表,则会显示不明确的列错误消息。

SELECT b.address, d.approved_comps
FROM   properties.tblpropertyassetclass_property_mapping a 
       INNER JOIN properties.tblproperty b 
               ON a.propertyid = b.propertyid 
       INNER JOIN properties.tblmls_add_derived c
               ON b.address = c.propertyaddress
       INNER JOIN properties.tblcompdetails d
               ON c.mlsnumber = d.mlsnumber
WHERE  a.propertyassetclassid = 3