Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Exemplos de consulta em um relacionamento muitos para muitos


A primeira coisa que eu faria é recomendar o uso de um ORM como Linq-To-Sql ou NHibernate que lhe dará representações de objeto do seu modelo de dados, o que torna muito mais simples lidar com coisas complexas, como operações CRUD de muitos para muitos.

Se um ORM não fizer parte do seu conjunto de ferramentas, veja como isso ficaria no SOL.
Users       UserAddresses     Addresses
=======     =============     =========
Id          Id                Id
FirstName   UserId            City
LastName    AddressId         State
                              Zip

Nossas tabelas são unidas assim:
   Users.Id -> UserAddresses.UserId
   Addresses.Id -> UserAddresses.AddressId
  • Todos os registros em Users com base em 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)
  • Todos os registros em endereços com base em 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)