在MSSQL中联接两个表,并且只返回字段中具有特定值的行


Join two tables in MSSQL and only return rows with a certain value in a field

我有两个表,我正试图用一个名为"job_id"的列连接它们。第一个表"承诺"包含有关项目详细信息,第二个表"作业"包含有关分配给作业的项目经理的详细信息。

我想将两者连接在一起,并返回"承诺"中对应于其项目经理(承诺.project_manager)的所有行。

因此,项目经理被分配了多个项目(包含在作业中),每个项目都有关于它的多个详细信息(在"承诺"中),所以在链的上游,我的查询应该返回与作业中的项目经理相关联的"承诺"链的所有行。

这是我当前的查询,但它只是返回Commissions的所有结果:

$sql = "SELECT * FROM Commitments 
LEFT JOIN Jobs 
ON Commitments.job_id=Jobs.job_id 
AND Jobs.Project_Manager LIKE :projectmanager"

这是在PHP/MSSQL中完成的,两者之间有ODBC连接。

很抱歉,如果这真的很简单,我对SQL查询很糟糕。谢谢

如果您想要Project_Manager,即使没有承诺:

SELECT *
FROM Jobs LEFT JOIN Commitments 
ON Commitments.job_id=Jobs.job_id 
WHERE Jobs.Project_Manager LIKE :projectmanager

或者如果您只想要Project_Manager与承诺:

SELECT *
FROM Jobs inner JOIN Commitments 
ON Commitments.job_id=Jobs.job_id 
WHERE Jobs.Project_Manager LIKE :projectmanager

尝试以下操作:

SELECT * FROM
Jobs j INNER JOIN Commitments c on j.job_id = c.job_id
WHERE j.project_manager LIKE :projectmanager