使用两个连接表在Postgres中创建视图的正确方法是什么?

时间:2015-12-15 19:50:50

标签: python postgresql join

我有两张桌子。

DDL:

A: a_id, b_id, a_name
B: b_id, b_name 

数据:

A:{1, 1, "apple"}, {2, 2, "cherry"}, {3,1,"lemon"}
B:{1, "yellow"}, {2, "black"}

我想创建一个数据如下的视图:

1, "apple, "yellow"
2, "cherry, "black"
3, "lemon, "yellow"

我正在尝试使用以下内容创建视图:

CREATE VIEW a_full AS
  SELECT *
    FROM a, b
    WHERE  a.b_id = b.b_id;

它给了我以下错误:

  

psycopg2.ProgrammingError:列“b_id”指定了多次

表A比表B大。

2 个答案:

答案 0 :(得分:1)

这是因为b_id是A和B表中的通用名称,您必须使用前缀tablename

CREATE VIEW a_full AS
  SELECT a.a_id, a.b_id, a.a_name,b. b_name 
    FROM a, b
    WHERE  a.b_id = b.b_id;

答案 1 :(得分:1)

如果在联接中使用using子句,则可以保留通配符:

create or replace view a_full as
select *
from a
join b using (b_id)