我创建视图只显示特定的city_name学生费,但它会给我学生姓名,所有费用

时间:2017-05-20 07:32:03

标签: sql oracle view

create or replace view v_amount 
as 
     select s.s_name, s.s_fname, b.fee
     from student s, amount b
     where s.s_add = 'Peshawar'
     order by s.s_name;

2 个答案:

答案 0 :(得分:0)

你需要明确一个关系1/1 你有一些加入S + B的领域吗?查看key字段

的示例
Create or replace view v_amount as select s.s_name,s.s_fname,b.fee 
from student s, amount b where s.s_add= 'Peshawar' AND s.key=b.key order by s.s_name;

如果您不理解为每个表和所有字段发布您的CREATE

答案 1 :(得分:0)

您没有加入条款,因此您正在获得CROSS JOIN。

你需要像

这样的东西
WHERE s.key = b.related_key

使用您正在使用的语法。

不确定您使用的数据库,但如果支持,最好使用ANSI连接。然后你会得到一个错误,明确问题是什么。因此,如果它受支持,您的查询将更好地编写如下:

SELECT s.s_name, s.s_fname, b.fee
FROM student s
INNER JOIN amount b
ON s.key = b.related_key --you missed out this bit
WHERE s.s_add = 'Peshawar'
ORDER BY s.s_name;

如果以这种方式编写,您将收到一条错误消息,告诉您在运行它时缺少ON子句。