Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Esempi di query in una relazione molti-a-molti

La prima cosa che farei è consigliare di utilizzare un ORM come Linq-To-Sql o NHibernate che ti darà rappresentazioni di oggetti del tuo modello di dati che rendono molto più semplice gestire cose complesse come operazioni CRUD molti-a-molti.

Se un ORM non fa parte del tuo set di strumenti, ecco come apparirebbe in SOL.

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

I nostri tavoli sono uniti in questo modo:

   Users.Id -> UserAddresses.UserId
   Addresses.Id -> UserAddresses.AddressId
  • Tutti i record in Utenti basati su 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)
  • Tutti i record negli indirizzi basati su 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)