Ich habe zwei Tabellen die erste Tabelle GroceryStores wie dieseWie vermeidet man die Verwendung einer Unterabfrage für meine Abfrage?
GsName | OrganizationId
-----------------------
'Olymp'| 1
'Carul'| 2
'Caref'| 3
'Viveo'| 2
'Suces'| 4
Die zweite Tabelle Organisationen wie folgt aussieht
Id | Code | ParentOrganizationId
--------------------------------
1 | 'AB' | 0
2 | 'CD' | 3
3 | 'EF' | 4
4 | 'GH' | 0
Wo GroceryStores.OrganizationId und Organizations.Id sind gleich aussieht.
Die Abfrage soll alle GsName zurückgeben, die eine bestimmte OrganizationId und seine jeweilige ParentOrganisation entsprechen.
Ich habe diese Abfrage versucht, aber es funktioniert nur, wenn ein GroceryStore nur zu einer Organisation gehört, aber ein GroceryStore kann eine ParentOrganization und eine GrandparentOrganization haben und verschiedene GroceryStores können derselben Organisation angehören. Auch kann man GroceryStore zu einer Organisation gehören, und dass Organisation möglicherweise nicht über eine ParentOrganization
SELECT GsName
FROM GroceryStores INNER JOIN Organizations
ON ParentOrganizationId = Id
WHERE OrganizationId = @Organization
OR WHERE OrganizationId = (SELECT ParentOrganizationId FROM Organizations
WHERE Id = @Organization)
> Meine Abfrage schlägt fehl, wenn die Unterabfrage mehr als einen GsName zurückgibt. basierend auf den angegebenen Daten sollte es nicht fehlschlagen, da es nur eine einzige parentorganizationId geben würde. Können Sie die von Ihnen gesuchte Ausgabe anzeigen? Meine Vermutung ist, dass Sie die Hierarchie durchqueren und alle Lebensmittelgeschäfte anzeigen möchten – ughai
Es fehlgeschlagen mit dem Fehler 'Unterabfrage zurückgegeben mehr als einen Wert', wenn ich die Unterabfrage ParentOrganisationId = @Organization hatte, aber ich habe es in dieser Frage behoben. Aber ich bekomme immer noch nicht das Ergebnis, nach dem ich suche. Wenn ich also eine variable Organisation deklariere und ihr den Wert 2 gebe, sollte die Abfrage 'Carul', 'Viveo', 'Caref' und 'Suces' zurückgeben. – AleAng
verwendest du SQL Server? – ughai