我有一个用户表,其中包含用户信息(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查询的好书有任何建议,那么这些建议也很有帮助。
答案 0 :(得分:4)
您需要在表users
上两次加入Invoice
表。
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