如何使用多个参数查询与另一个 table 具有一对多关系的 table?

How can I query a table with a one to many relationship with another table using multiple parameters?

我有两个 table,第一个 table 是主要的 table 项目,该项目有一个 ID 和一个我正在搜索的单元。第二个 table 是一个叫做 Project_ChecklistItems 的桥 table。此 table 将 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 个名称进行搜索。

where 子句有问题

首先 - dbo.ECN.Division 不能用在 Where 子句中,因为它不在 From 子句中。对于其余部分,我假设它真的应该是 Project.Unit

如果您在不使用方括号的情况下在 Where 子句中混合使用子句(AND 和 OR),您几乎总是会得到意想不到的结果。我假设您真正想要的是所有记录,其中 Project.Unit 是其中之一(工业、汽车、转椅)并且状态为是,但是您拥有的是与以下其中一项匹配的所有记录(工业- 状态无关),(汽车 - 状态无关)或(转椅和状态必须是是)。

尝试以下任一 where 子句

WHERE 
( dbo.Project.Unit = 'Industrial' 
  OR dbo.Project.Unit = 'Automotive' 
  OR dbo.Project.Unit = 'SwivelChair'
)
And dbo.Project_ChecklistItem.Status = 'Yes'

WHERE dbo.Project.Unit IN ('Industrial', 'Automotive', 'SwivelChair')
And dbo.Project_ChecklistItem.Status = 'Yes'