使用INTERSECTS在sql中创建视图语句



我正在创建一个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 

最新更新