sql-server-2005 – 以多对多关系查询示例

前端之家收集整理的这篇文章主要介绍了sql-server-2005 – 以多对多关系查询示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
哇,很难找到一个简单的解释这个话题.一个简单的多对多关系.

三个表,tableA,tableB和一个连接表A_B.

我知道如何使用键和所有设置关系,但是当时间到来执行INSERT,UPDATE和DELETE查询时,我有点困惑…

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

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

3如何在TableA或TableB中进行INSERT,然后在连接表中进行相应的INSERT进行连接.

我不是在寻找一个特定项目的解决方案,只是一些可以应用的一般例子.也许你有东西在说谎?

解决方法

我会做的第一件事是建议使用像 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)

猜你在找的MsSQL相关文章