当前位置:  开发笔记 > 数据库 > 正文

查询多对多关系中的示例

如何解决《查询多对多关系中的示例》经验,为你挑选了1个好方法。

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

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

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

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

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

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

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

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



1> Micah..:

我要做的第一件事是建议使用像Linq-To-Sql或NHibernate这样的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)

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有