我正在尝试通过连接 Sakila 数据库中的一些表(在 MySQL 中)来创建视图(https://dev.mysql.com/doc/sakila/en/),即我要加入付款、员工和客户,并显示客户姓名、员工姓名、付款id和金额。
我右键单击“视图”,然后单击“创建表”。
我认为存在此错误是因为在员工表和客户表中都有名为first_name和last_name的列。我该如何解决这个问题?
我的代码:
CREATE VIEW `payment` AS
SELECT payment.payment_id, customer.first_name, customer.last_name,
staff.first_name, staff.last_name, payment.amount
FROM payment INNER JOIN customer ON payment.customer_ID = customer.customer_ID
INNER JOIN staff ON payment.staff_ID = staff.staff_ID
错误信息:
错误 1060:列名“first_name”重复
如果我尝试使用别名,正如一些回答者所建议的那样,我会收到错误 ERROR 1347: 'sakila. payment' is not VIEW。
完全相同的代码就像 SQL 文件中的魅力一样,当我运行它时,它会创建我需要的表。这两种方法有什么区别?我应该使用哪一个?为什么它不能与“视图”->“创建视图”选项一起使用?
先感谢您。
使用别名来分配名称:
CREATE VIEW v_payment AS
SELECT p.payment_id, c.first_name as customer_first_name, c.last_name as customer_last_name,
s.first_name as staff_first_name, s.last_name as staff_last_name,
p.amount
FROM payment p INNER JOIN
customer c
ON p.customer_ID = c.customer_ID INNER JOIN
staff s
ON p.staff_ID = s.staff_ID;
first_name
and last_name
在你的中出现两次select
列表。上面澄清了该名称是客户还是员工的名称。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)