我有两张桌子。
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大。
答案 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)