在 mysql 中使用连接和 DATEDIFF() 创建视图
Creating a view using join and DATEDIFF() in mysql
我知道已经有人问过关于使用连接创建视图的问题,这很好,除了这里我试图包含日期差异。
我有一个名为 'appointments' 的 table 和一个名为 'bill' 的 'bill',具有 FK AppID。
我想创建一个视图,包含 BillNo(账单编号)、PatientID 和日期
CREATE VIEW overdue_payments AS
SELECT bill.BillNo, appointment.AppID, appointment.AppDate
FROM bill,appointment
WHERE bill.AppID=appointment.AppID
AND DATEDIFF(AppDate, CURDATE())>30
已使用且代码实现但未添加过期的测试日期:
CREATE VIEW overdue_payments2 AS
SELECT bill.BillNo, appointment.AppID, appointment.AppDate
FROM bill,appointment
inner join appointment on bill.AppID=appointment.AppID
where DATEDIFF(AppDate, CURDATE())>30
然后我尝试使用内部联接,但出现 'non-unique table' 错误。
非常感谢任何帮助。
您的第一个查询使用了长期弃用的逗号交叉连接语法:
FROM bill,appointment
WHERE bill.AppID=appointment.AppID
要将其更改为现代的显式连接语法,您需要:
FROM bill
INNER JOIN appointment ON bill.AppID=appointment.AppID
但是您在帐单上留下了“,appointment”,所以它抱怨您试图在不提供别名的情况下两次加入约会。只需删除“,约会”。
我知道已经有人问过关于使用连接创建视图的问题,这很好,除了这里我试图包含日期差异。
我有一个名为 'appointments' 的 table 和一个名为 'bill' 的 'bill',具有 FK AppID。
我想创建一个视图,包含 BillNo(账单编号)、PatientID 和日期
CREATE VIEW overdue_payments AS
SELECT bill.BillNo, appointment.AppID, appointment.AppDate
FROM bill,appointment
WHERE bill.AppID=appointment.AppID
AND DATEDIFF(AppDate, CURDATE())>30
已使用且代码实现但未添加过期的测试日期:
CREATE VIEW overdue_payments2 AS
SELECT bill.BillNo, appointment.AppID, appointment.AppDate
FROM bill,appointment
inner join appointment on bill.AppID=appointment.AppID
where DATEDIFF(AppDate, CURDATE())>30
然后我尝试使用内部联接,但出现 'non-unique table' 错误。
非常感谢任何帮助。
您的第一个查询使用了长期弃用的逗号交叉连接语法:
FROM bill,appointment
WHERE bill.AppID=appointment.AppID
要将其更改为现代的显式连接语法,您需要:
FROM bill
INNER JOIN appointment ON bill.AppID=appointment.AppID
但是您在帐单上留下了“,appointment”,所以它抱怨您试图在不提供别名的情况下两次加入约会。只需删除“,约会”。