Sql 加入我的select语句
我的目标是创建一个关于分行城镇管理的物业、物业详细信息以及对这些物业进行的检查次数的视图。我想我已经做出了正确的SELECT查询,但是我在将它们连接在一起时遇到了困难 我使用的桌子是Sql 加入我的select语句,sql,oracle,select,join,Sql,Oracle,Select,Join,我的目标是创建一个关于分行城镇管理的物业、物业详细信息以及对这些物业进行的检查次数的视图。我想我已经做出了正确的SELECT查询,但是我在将它们连接在一起时遇到了困难 我使用的桌子是 YR_属性-主键-“propertynum”,外键-branchnum YR_分行-主键-分行 年检查-主键1-propertynum,主键2-日期检查 这就是我所做的 SELECT area, city From YR_branch SELECT propertynum, COUNT (propertynum)
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语句。谢谢你对我的帮助 第一个和第三个查询可以通过简单的联接合并。然后可以使用Subselect合并第三个。像这样的方法应该会奏效:
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;
以下是一个解决方案:
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标准联接语法将表组合在一起。首先在联接之前聚合检查表,以获取属性上的检查次数
左侧外部联接
确保包括所有特性,即使没有检查。coalesce()
将这种情况下的检查次数显示为0而不是NULL
如果您确实需要SQL视图,那么只需将
创建视图作为
放在选择
之前。您是否尝试过任何语句,看看是否可以按您的意愿使其工作?在我放入第三个表之前,我尝试过。。。yr_branchnum上的内部连接yr_检查=yr_检查.propertynum;非常感谢。不过上面写着ORA-00918:专栏含糊不清谢谢,非常感谢!