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

时间:2015-02-06 16:16:44

标签: php sql sql-server join odbc

我正在尝试使用名为“job_id”的列加入两个表。第一个表“承诺”包含有关项目详细信息的信息,第二个表称为“作业”,其中包含有关分配给作业的项目经理的详细信息。

我想将两者连接在一起并返回与其项目管理器(Commitments.Project_Manager)对应的“Commitments”中的所有行。

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

如果你想让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

答案 1 :(得分:0)

尝试以下方法:

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