sql >> Databasteknik >  >> RDS >> Sqlserver

Fråga exempel i en många-till-många-relation

Det första jag skulle göra är att rekommendera att använda en ORM som Linq-To-Sql eller NHibernate som kommer att ge dig objektrepresentationer av din datamodell som gör det mycket enklare att hantera komplexa saker som många-till-många CRUD-operationer.

Om en ORM inte är en del av din verktygsuppsättning så här är hur detta skulle se ut i SOL.

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

Våra bord är sammanfogade så här:

   Users.Id -> UserAddresses.UserId
   Addresses.Id -> UserAddresses.AddressId
  • Alla poster i Users baserat på 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)
  • Alla poster i Adresser baserade på 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. Förenar resultatet av två frågor mysql

  2. Hur beräknar man antalet hopp mellan källan och destinationen?

  3. En introduktion till MySQL-datatyper

  4. Var kan jag hitta MySQL-transaktionsloggen?