gpt4 book ai didi

mysql - SQL JOINS 不起作用

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

我有下表

1. tblJobs

JobID int primary key

JobTypeID int

JobClientID int

JobStaffID int

....

2. tblContacts

ContactID int primary key

ContactName varchar

....

3. tblJobTypes

TypeID int primary key

TypeName varchar

我可以使用此 SQL 从这些表中选择数据...

SELECT tblContacts.ContactName, tblContacts.ContactID, 
tblJobs.JobID, tblJobs.JobTypeID, tblJobs.JobClientID, tblJobs.JobStaffID,
tblJobTypes.* FROM (tblJobs LEFT JOIN tblJobTypes ON tblJobs.JobTypeID = tblJobTypes.TypeID) LEFT JOIN tblContacts ON tblJobs.JobClientID = tblContacts.ContactID;

来自 SQL 的示例行...

| ContactName| ContactID | JobID | JobTypeID | JobClientID | JobStaffID |TypeID | TypeName |

| Mr Contact | 290 | 341 | 3 | 290 | 202 | 3 | Enquiry |

正如您所看到的,此 SQL 将 tblJobs.JobClientID 连接到 tblContacts.ContactID(290)。这就是我获取 tblContacts.JobStaffID (202) 的方式。

如何修改 SQL 来获取 tblContacts.ContactName?

我已尝试连接表两次,但没有成功。

最佳答案

假设 JobStaffID 是与 tblContacts.ContactID 相关的外键,您正确地假设您需要加入 tblContacts 表两次 - 但你必须在每个连接中给它不同的别名,如下所示:

SELECT 
c1.ContactName as ClientName, c1.ContactID as ClientID,
c2.ContactName as StaffName, c2.ContactID as StaffID,
j.JobID, j.JobTypeID, j.JobClientID, j.JobStaffID,
jt.TypeID, jt.TypeName
FROM tblJobs j
LEFT JOIN tblJobTypes jt ON j.JobTypeID = jt.TypeID
LEFT JOIN tblContacts c1 ON j.JobClientID = c1.ContactID
LEFT JOIN tblContacts c2 ON j.JobStaffID = c2.ContactID;

同时,您可能希望对所有表使用别名以减少查询文本。

关于mysql - SQL JOINS 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29792707/

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