我正在创建一个SQL创建视图语句,而我必须编写的最后一条语句出现了问题。对于这句话,我必须使用交集来获取30岁以上和65英寸以上的人。查询的确切细节如下
- 编写一个查询,返回身体成分表中列出的所有年龄超过30岁的人的名字和姓氏。然后修改查询以使用INTERSECTS返回所有年龄超过30岁且身高超过65英寸的人
我尝试使用intersect和internal join来编写这个视图语句,以从不同的表中获取名称,但在尝试运行程序时遇到了错误。我得到的错误是
错误:"WHERE"处或附近有语法错误
第11行:其中b.height=65;
我不会发布我的完整程序,只发布这个create-view语句,这样行号就不会了。我将发布我的代码,然后发布我用来创建这个view语句的两个表,希望有人能帮我纠正这个错误。提前谢谢。
CREATE VIEW intersectt AS
SELECT
a.fname, a.lname
FROM
what.person as a
INNER JOIN
what.body_composition as b ON a.pid = b.pid
WHERE
b.age > 30
INTERSECT
SELECT
a.fname, a.lname
FROM
what.person as a
INNER JOIN
what.body_composition as b
WHERE
b.height = 65;
这是的两张表
表what.body_composition
:
Column | Type | Modifiers
--------+---------+-----------
pid | integer | not null
height | integer | not null
weight | integer | not null
age | integer | not null
和表what.person
:
Column | Type | Modifiers
--------+-----------------------+-----------------------------------------------
pid | integer | not null default nextval('person_pid_seq'::reg class)
uid | integer |
fname | character varying(25) | not null
lname | character varying(25) | not null
您在第二个查询中缺少ON子句
CREATE VIEW intersectt AS
SELECT a.fname, a.lname
FROM what.person as a
INNER JOIN what.body_composition as b
ON a.pid = b.pid
AND b.age > 30
INTERSECT
SELECT a.fname, a.lname
FROM what.person as a
INNER JOIN what.body_composition as b
ON a.pid = b.pid
AND b.height = 65