如何使用多个参数查询与另一个 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'
我有两个 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'