Mysql 如何将最后一个表连接到此三重连接上?

Mysql 如何将最后一个表连接到此三重连接上?,mysql,sql,Mysql,Sql,我有一个数据库,我以超市的一个分支为模型。 基本上,我想做的是一个连接,输出客户名称、他们的购物篮ID、出纳(员工类型)ID以及随后服务的员工的姓名。 我已经成功地进行了三重表联接,并显示了basketID、EmployeeId和员工姓名,但还想在开始时获取客户的姓名,但不知道如何进行 我已经粘贴了一些有问题的SQL create table Employee ( name char(30), employeeID integer(20) primary key, ); create ta

我有一个数据库,我以超市的一个分支为模型。 基本上,我想做的是一个连接,输出客户名称、他们的购物篮ID、出纳(员工类型)ID以及随后服务的员工的姓名。 我已经成功地进行了三重表联接,并显示了basketID、EmployeeId和员工姓名,但还想在开始时获取客户的姓名,但不知道如何进行

我已经粘贴了一些有问题的SQL

create table Employee
(
name char(30),
employeeID integer(20) primary key,
);



create table Cashier
(
tillID integer(4) primary key,
employeeID integer(20),
foreign key (employeeID) references adbc921_Employee (employeeID)
);

create table Customer
(
customerID integer(20) primary key,
first_name char(20),
last_name char(20),
);

create table CustomerInStorePurchase
(
customerID integer(20),
number_of_items integer(3),
tillID integer(4),
basketID integer(10),
foreign key (tillID) references adbc921_Cashier (tillID),
foreign key(customerID) references adbc921_Customer (customerID),
foreign key (basketID) references adbc921_Basket (basketID)
);

create table Basket
(
basketID integer(10),
customerID integer(20),
foreign key (customerID) references adbc921_CustomerInStorePurchase (customerID),
foreign key (productID) references adbc921_Product (productID)
);
选择adbc921_CustomerStorePurchase.basketID,adbc921_Cashier.employeeId,adbc921_Employee.name,concat(adbc921_Customer.first_name',adbc921_Customer.last_name) 从((adbc921_客户商店购买 在adbc921上内部加入adbc921\u出纳(CustomerInStorePurchase.tillID=adbc921\u Cashier.tillID) 内部加入adbc921_出纳上的adbc921_员工。employeeID=adbc921_员工。employeeID) 在adbc921\u Customer.customerID=adbc921\u CustomerStorePurchase.customerID上内部加入adbc921\u Customer


如果我没弄错,您在customer表和CustomerStore之间得到了一个引用,那么为什么不使用它呢?

只需添加另一个与customer表的联接即可

Select p.basketID, c.employeeId, e.name, cus.customerID, cus.first_name, cus.last_name
FROM adbc921_CustomerInStorePurchase AS p
Inner Join adbc921_Cashier AS c on p.tillID = c.tillID
Inner Join adbc921_Employee AS e on c.employeeID = e.employeeID
inner join adbc921_Customer AS cus on cus.customerID = p.customerID

我强烈建议在查询中使用表别名,特别是当您有这么长的表名时。它消除了大量重复出现的使查询难以阅读的混乱情况。

看起来您遗漏了
adbc921\u出纳
表定义的结尾。有什么问题吗?只需使用
adbc921\u Customer
添加另一个联接即可。仅供参考,联接周围不需要括号。请使用代码格式,不是引号格式。你有一个打字:<代码> 91 应该是<代码> 921 < /COD>使用别名避免这样的问题。为什么你认为你需要把所有的连接都嵌套在括号里?在W3Studio上,他们的连接上使用括号。我们中的许多人认为W3Studio是教程网站中最差的。不幸的是,它们也很受欢迎,最终在谷歌搜索中名列前茅。