我有两个表,第一个表是名为Project的主表,项目有一个ID和一个我正在搜索的单元。第二个表是名为Project_ChecklistItems的桥表。此表将Project连接到ChecklistItems。 ChecklistItems具有它们所属的Project.ID,该Project.ID的名称和状态。
我需要按单位和核对清单状态进行搜索。
我正在考虑一个带有多个where语句的innerjoin语句。
`SELECT *
FROM dbo.Project
INNER JOIN dbo.Project_ChecklistItem
ON dbo.Project.ID = dbo.Project_ChecklistItem.ProjectID
WHERE dbo.Project.Unit = 'Industrial'
OR dbo.ECN.Division = 'Automotive'
OR dbo.Project.Unit = 'SwivelChair'
And dbo.Project_ChecklistItem.Status = 'Yes''
|Project ID | Unit | |ProjctID|ChecklistItemName|Status|
| 105 | automotive | |105 | ASO | No |
| | | |105 | PR | Yes |
| | | |105 | SOP | Yes |
问题是我需要能够通过一个特定的Checklist_Item名称或所有Checklist_Item名称进行搜索。
答案 0 :(得分:0)
你遇到了where子句
的问题首先 - dbo.ECN.Division不能在Where子句中使用,因为它不在From子句中。对于其余部分,我假设它应该是Project.Unit
如果你在Where子句中混合使用条款(ANDs和OR)而不使用括号,你几乎总会得到你不想要的东西。我假设你真正想要的是所有记录,其中Project.Unit是(工业,汽车,转椅)之一,状态是肯定的,但你所拥有的所有记录都符合下列之一(工业 - 状态不相关的),(汽车 - 状态无关)或(转椅和状态必须是)。
尝试以下任何一个子句
WHERE
( dbo.Project.Unit = 'Industrial'
OR dbo.Project.Unit = 'Automotive'
OR dbo.Project.Unit = 'SwivelChair'
)
And dbo.Project_ChecklistItem.Status = 'Yes'
OR
WHERE dbo.Project.Unit IN ('Industrial', 'Automotive', 'SwivelChair')
And dbo.Project_ChecklistItem.Status = 'Yes'