gpt4 book ai didi

mysql - 在 MySQL 中创建的 VIEW 使用 SELECT 给出错误的输出

转载 作者:行者123 更新时间:2023-11-29 21:20:07 25 4
gpt4 key购买 nike

我正在为一家廷臣公司创建数据库,我有 5 个关系

CREATE TABLE Customer
(
cid int(7) NOT NULL,
cfname char(25) NOT NULL,
clname char(25) NOT NULL,
aptnum int(100) NOT NULL,
street char(50) NOT NULL,
pobox int(10) NOT NULL,
area char(50) NOT NULL,
country char(50) NOT NULL,
phone int(12) NOT NULL,
PRIMARY KEY (cid)
)ENGINE=INNODB;

CREATE TABLE Orderr
(
orderid int(8) NOT NULL,
origin char(100) NOT NULL,
destination char(100) NOT NULL,
eta date NOT NULL,
weight int(100) NOT NULL,
priority enum('F','R') NOT NULL,
task enum('P','D') NOT NULL,
odate date NOT NULL,
cnum int(12) NOT NULL,
cpin int(8) NOT NULL,
custid int(7) NOT NULL,
PRIMARY KEY (orderid),
FOREIGN KEY (custid) REFERENCES Customer(cid)
)ENGINE=INNODB;


CREATE TABLE History
(
histid int(6) NOT NULL,
orderid int(8) NOT NULL,
status enum('D','O','R') NOT NULL,
current_loc char(50) NOT NULL,
PRIMARY KEY(histid),
FOREIGN KEY (orderid) REFERENCES Orderr(orderid)
)ENGINE=INNODB;

CREATE TABLE Driver
(
driverid int(6) NOT NULL,
dfname varchar(25) NOT NULL,
dlname varchar(25) NOT NULL,
dob date NOT NULL,
phone int(10) NOT NULL,
vehicle int(6) NOT NULL,
PRIMARY KEY (driverid)
)ENGINE=INNODB;

CREATE TABLE Vehicle
(
vid int(6) NOT NULL,
num_plate varchar(6) NOT NULL,
vtype enum('T','B','P') NOT NULL,
driverr int(6) NOT NULL,
orders int(8) NOT NULL,
PRIMARY KEY (vid),
FOREIGN KEY (driverr) REFERENCES Driver(driverid),
FOREIGN KEY (orders) REFERENCES Orderr(orderid)
)ENGINE=INNODB;

我正在尝试为客户创建一个 View ,以提供对特定列的访问权限,这是查询

CREATE VIEW CustView AS
SELECT cfname, clname, aptnum, street, pobox, area, country, origin, destination, weight, priority, task, eta, odate, dfname, dlname, driver.phone
FROM Customer, Orderr, Vehicle, Driver
WHERE Customer.cid=Orderr.custid AND Vehicle.driverr=Driver.driverid AND Orderr.orderid=Vehicle.orders;

当我运行SELECT * FROM CustView时,我没有得到所需的输出。我应该对我的查询或我的关系做出什么改变(如果有的话)?

谢谢。

最佳答案

正如之前的发帖者所说,我只能猜测。但是从您的表和 View 定义中,我怀疑您没有正确建模车辆和订单之间的关系。一辆车辆可以用于多个订单,对吗?在这种情况下,车辆 ID 必须是订单表中的外键。你的设计正好相反。

与您的问题无关,我对您的历史记录表表示怀疑。已履行订单的历史记录仅包含过去的订单,对吗?因此,历史记录只是一个根据其中包含的某些日期的过去值选择订单的 View 。

关于mysql - 在 MySQL 中创建的 VIEW 使用 SELECT 给出错误的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com