【发布时间】:2016-11-18 22:38:59
【问题描述】:
我正在尝试通过从 Sakila 数据库 (https://dev.mysql.com/doc/sakila/en/) 加入一些表(在 MySQL 中)来创建一个视图,即我想加入付款、员工和客户并显示客户姓名、员工姓名、付款 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 文件中的魅力一样,当我运行它时,它会创建我需要的表。这两种方法有什么区别?我应该使用哪一个?为什么它不能与 Views -> Create View 选项一起使用?
提前谢谢你。
【问题讨论】:
-
您不会收到此处显示的联接发布的错误,因为您已通过从客户表中定义所需的 first_name 列来定义它。也许在您的实际连接中您没有指定表格。
-
尝试 SELECT payment.payment_id, customer.first_name as customer_firstname, customer.last_name as customer_last_name ...等等...换句话说,为相同的列名添加别名...跨度>
-
@Niagaradad,我确实在实际连接中指定了表