簡體   English   中英

如何從相同的兩個表中運行兩個LEFT連接,但是在這些表中的不同字段中運行

[英]How to run two LEFT joins from the same two tables, but to different fields within those tables

我有一個信息表,其中包含以下字段;

id, staffMember, lineManager, description

staffMember和lineManager字段返回與user表中具有以下列的行的id相對應的整數值

id, firstname, surname

我可以使用以下查詢返回信息表中的信息,將staffMember值替換為名字和姓氏的CONCAT:

SELECT information.id, 
    CONCAT( users.firstname,  ' ', users.surname ) AS staffMember, 
    information.lineManager, 
    LEFT(information.description,200) As description 
FROM information 
LEFT JOIN users 
    ON ( information.staffMember = users.id ) 
LIMIT 0 , 30"

但我想要做的是重復在lineManager上的staffMember的值以及相同的查詢(我然后作為json字符串傳遞)的過程 - 但是,我知道我不能有兩個LEFT連接到同一個表,但等同於不同的字段。

我們將非常感激地提供任何幫助。

聽起來你想要這個:

SELECT i.id, 
    CONCAT(u1.firstname,  ' ', u1.surname) AS staffMember, 
    CONCAT(u2.firstname,  ' ', u2.surname  AS lineManager, 
    LEFT(i.description,200) As description 
FROM information i
LEFT JOIN users u1
    ON i.staffMember = u1.id 
LEFT JOIN users u2
    on i.lineManager = u2.id
LIMIT 0 , 30

您只需在users表上執行兩次LEFT JOIN 一旦您加入staffMember ,另一次您將加入lineManager 通過為表提供不同的表別名,您可以區分表和值。

如果你想更清楚:

SELECT i.id, 
    CONCAT(staff.firstname,  ' ', staff.surname) AS staffMember, 
    CONCAT(manager.firstname,  ' ', manager.surname  AS lineManager, 
    LEFT(i.description,200) As description 
FROM information i
LEFT JOIN users staff
    ON i.staffMember = staff.id 
LEFT JOIN users manager
    on i.lineManager = manager.id
LIMIT 0 , 30

像這樣的東西:

SELECT information.id FROM information 
LEFT JOIN users u ON u.id = information.staffMember
LEFT JOIN users ul ON ul.id = information.lineManager

桌子后面的字母/單詞完全由你完成。 它們是您動態組成的表名的別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM