我有两个表的第一个表GroceryStores看起来像这样如何避免对我的查询使用子查询?
GsName | OrganizationId
-----------------------
'Olymp'| 1
'Carul'| 2
'Caref'| 3
'Viveo'| 2
'Suces'| 4
第二个表组织看起来像这样
Id | Code | ParentOrganizationId
--------------------------------
1 | 'AB' | 0
2 | 'CD' | 3
3 | 'EF' | 4
4 | 'GH' | 0
凡GroceryStores.OrganizationId和Organizations.Id是相同的。
该查询应该返回与给定的OrganizationId及其相应的ParentOrganization匹配的所有GsName。
我已经试过此查询但当GroceryStore只属于一个组织,而是一个GroceryStore可以有ParentOrganization和GrandparentOrganization和不同GroceryStores可以属于同一个组织它才会起作用。此外,一个GroceryStore可以属于一个组织和该组织可能没有ParentOrganization
SELECT GsName
FROM GroceryStores INNER JOIN Organizations
ON ParentOrganizationId = Id
WHERE OrganizationId = @Organization
OR WHERE OrganizationId = (SELECT ParentOrganizationId FROM Organizations
WHERE Id = @Organization)
>当子查询返回多个GsName时,我的查询失败。 根据给定的数据,它不应该失败,因为只会有一个parentorganizationId。你能展示你正在寻找的例外输出吗?我的猜测是你想遍历层次结构并显示所有杂货店 – ughai
当我将子查询作为ParentOrganizationId = @Organization时,出现错误“子查询返回多个值”的错误,但我在此问题中修复了此错误。但我仍然没有得到我期待的结果。因此,如果我声明变量组织并将其值设为2,则查询应返回'Carul','Viveo','Caref'和'Suces' – AleAng
是否使用SQL Server? – ughai