gpt4 book ai didi

MySQL嵌套连接

转载 作者:可可西里 更新时间:2023-11-01 08:06:41 24 4
gpt4 key购买 nike

我有一个包含用户信息(fname、lname...等)的用户表和一个发票表。在发票表中,我有一个名为 created_id 的字段,它链接到创建发票的 user.id。我还有一个名为 staff_id 的字段,它链接到批准发票的员工 user.id。

如何在单个查询中同时查询 created_id 和 staff_id 的名字和姓氏?以下是我尝试过的一些方法......

SELECT  
invoices.*,
users.fname as created_fname,
users.lname as created_lname
FROM
invoices
INNER JOIN users
ON users.id = invoices.created_id;

这行得通,但它只能让我知道创建发票的人的名字。我怎样才能把员工的名字也加进去....

SELECT 
invoices.*,
users.fname as created_fname,
users.lname as created_lname,
users2.fname as staff_fname,
users2.lname as staff_lname
FROM invoices, users
LEFT JOIN
invoices,
users AS users2
ON
users.id = invoices.created_id,
users.id = users2.id

那行不通,但更接近。任何指导或示例都会非常有帮助。此外,如果您对学习如何执行更高级的 MySQL 查询的好书有任何建议,那也会有所帮助。

最佳答案

您需要在 Invoice 表上两次加入 users 表。

SELECT  a.*,
b.fname created_firstName,
b.lname created_LastName,
c.fname staff_firstName,
c.lname staff_LastName
FROM Invoice a
INNER JOIN users b
ON a.created_id = b.id
INNER JOIN users c
ON a.staff_id = c.id

最好的是,您可以使用 CONCAT

将他们的名字连接成一个
SELECT  a.*,
CONCAT(b.fname, ' ', b.lname) created_fullName,
CONCAT(c.fname, ' ', c.lname) staff_fullName
FROM Invoice a
INNER JOIN users b
ON a.created_id = b.id
INNER JOIN users c
ON a.staff_id = c.id

关于MySQL嵌套连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12649284/

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