查询多对多关系中的示例

Soe*_*ren 10 many-to-many sql-server-2005

哇,很难找到这个主题的简单解释.一个简单的多对多关系.

三个表,tableA,tableB和一个联结表A_B.

我知道如何使用密钥和所有设置关系,但是当执行INSERT,UPDATE和DELETE查询时,我会感到有些困惑....

基本上,我正在寻找的是一个示例,显示:

  1. 如何根据TableB中的ID获取TableA中的所有记录

  2. 如何根据TableA中的ID获取TableB中的所有记录

3如何在TableA或TableB中插入,然后在联结表中进行相应的INSERT以建立连接.

我不是在寻找特定项目的解决方案,只是可以应用的一些常规示例.也许你有什么东西躺在身边?

Mic*_*cah 6

我要做的第一件事是建议使用像Linq-To-SqlNHibernate这样的ORM ,它将为您提供数据模型的对象表示,这使得处理复杂事物(如多对多CRUD操作)变得更加简单.

如果ORM不是您工具集的一部分,那么这就是SOL的外观.

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

我们的表连接如下:

   Users.Id -> UserAddresses.UserId
   Addresses.Id -> UserAddresses.AddressId
  • 基于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)
  • 基于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)