加入我的select语句

时间:2013-04-26 13:56:59

标签: sql oracle select join

我的目标是创建一个关于通过分支镇管理的物业的VIEW,物业详情以及为这些物业进行的检查次数。我想我已经做出了正确的SELECT查询,但是我无法将它们连接在一起。

我正在使用的表是

  1. YR_property - 主键 - ' propertynum' ,Foreign Key- branchnum
  2. YR_branch - 主键 - branchnum
  3. YR_inspection - 主键1 - propertynum,主键2 - dateinspected。
  4. 这就是我所管理的......

    SELECT area, city
    From YR_branch
    
    SELECT propertynum, COUNT (propertynum)  FROM yr_inspection
    GROUP BY propertynum
    
    SELECT propertynum, branchnum, area, city, postcode, prop_type, rooms
    FROM YR_property
    

    重申一下,我正在尝试加入SELECT语句。感谢您提供的任何帮助!

2 个答案:

答案 0 :(得分:1)

第一个和第三个查询可以与简单的JOIN合并。然后,您可以使用子选择合并第三个。这样的事情应该有效:

SELECT * FROM (
    SELECT propertynum, COUNT (propertynum) 
    FROM yr_inspection GROUP BY propertynum
) a,
(
    SELECT b.area, b.city, p.propertynum, p.branchnum, 
           p.area, p.city, p.postcode, p.prop_type, p.rooms 
    FROM YR_property p, YR_branch b
    WHERE p.branchnum = b.branchnum
) b
where a.propertynum = b.propertynum;

答案 1 :(得分:1)

这是一个解决方案:

select p.propertynum, p.branchnum, p.area, p.city, p.postcode, p.prop_type, p.rooms,
       b.area, b.city, coalesce(i.NumInspected, 0)
from yr_property p join
     yr_branch b
     on p.branchnum = b.branchnum left outer join
     (select propertynum, count(*) as NumInspected
      from yr_inspection i
      group by propertynum
     ) i
     on i.propertynum = p.propertynum;

这使用ANSI标准连接语法将表格组合在一起。检查表首先在联接之前汇总,以获得对财产的检查次数。

left outer join确保包含所有属性,即使没有检查也是如此。 coalesce()显示在这种情况下的检查次数为0而不是NULL。

如果您真的想要一个SQL视图,那么只需将create view <your view name here> as放在select之前。