sql >> Databáze >  >> RDS >> Sqlserver

Příklady dotazů ve vztahu many-to-many

První věc, kterou bych udělal, je doporučit použití ORM jako Linq-To-Sql nebo NHibernate což vám poskytne objektové reprezentace vašeho datového modelu, díky čemuž je mnohem jednodušší zvládnout složité věci, jako jsou operace many-to-many CRUD.

Pokud ORM není součástí vaší sady nástrojů, zde je návod, jak by to vypadalo v SOL.

Users       UserAddresses     Addresses
=======     =============     =========
Id          Id                Id
FirstName   UserId            City
LastName    AddressId         State
                              Zip

Naše stoly jsou spojeny takto:

   Users.Id -> UserAddresses.UserId
   Addresses.Id -> UserAddresses.AddressId
  • Všechny záznamy v Users založené na Addresses.Id
SELECT        Users.*
FROM            Addresses INNER JOIN
                         UserAddresses ON Addresses.Id = UserAddresses.AddressId INNER JOIN
                         Users ON UserAddresses.UserId = Users.Id
WHERE        (Addresses.Id = @AddressId)
  • Všechny záznamy v Adresách založené na Users.Id
SELECT        Addresses.*
FROM            Addresses INNER JOIN
                         UserAddresses ON Addresses.Id = UserAddresses.AddressId INNER JOIN
                         Users ON UserAddresses.UserId = Users.Id
WHERE        (Users.Id = @UserId)


  1. Ekvivalent sekvencí Oracle v MySQL

  2. ORA-01840:vstupní hodnota není dostatečně dlouhá pro formát data v Oracle Insert pomocí Select

  3. Dynamické sloupce v příkazu SQL Select, uchovávající nedefinované hodnoty

  4. 8 Nové funkce kompatibility Oracle v EnterpriseDB PPAS 9.2 Beta