-2

我的目标是创建一个视图,查看由分公司所在城镇管理的物业、物业详细信息以及对这些物业进行的检查次数。我想我已经做出了正确的 SELECT 查询,但是我无法将它们连接在一起。

我正在使用的表是

  1. YR_property - 主键 - 'propertynum' ,外键 - branchnum
  2. YR_branch - 主键 - branchnum
  3. YR_inspection - 主键 1 - propertynum,主键 2 - 检查日期。

这就是我所管理的......

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 语句。感谢您为我提供的任何帮助!

4

2 回答 2

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;
于 2013-04-26T14:09:22.497 回答
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> asselect.

于 2013-04-26T14:47:32.687 回答