Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abfragebeispiele in einer Viele-zu-Viele-Beziehung

Als erstes würde ich empfehlen, ein ORM wie Linq-To-Sql zu verwenden oder NHibernate Dadurch erhalten Sie Objektdarstellungen Ihres Datenmodells, die es viel einfacher machen, komplexe Dinge wie Many-to-Many-CRUD-Operationen zu handhaben.

Wenn ein ORM nicht Teil Ihres Toolsets ist, dann würde dies in SOL so aussehen.

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

Unsere Tabellen sind wie folgt verbunden:

   Users.Id -> UserAddresses.UserId
   Addresses.Id -> UserAddresses.AddressId
  • Alle Datensätze in Benutzern basierend auf 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)
  • Alle Datensätze in Adressen basierend auf 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)