mysql - 如何在多对多关系上进行 MySQL CRUD 选择

标签 mysql database many-to-many

我正在尝试对与中间表(关联表)的多对多关系执行创建、选择、更新和删除操作。 我有以下结构。在名称匹配的中间表中假设 FK 约束。

tbl_A 和 tbl_B 是多对多的关系。 tbl_IM 是中间表。

tbl_A
aID 
Name

tbl_B
bID
Name
UniqueField

Intermediary Table tbl_IM
imID
aID
UniqueField

一个 tbl_A 项可以有多个 tbl_B 项,一个 tbl_B 项可以属于多个 tbl_A 项。

tbl_B 通常是一组固定的 18 条左右的记录(用于程序中允许的选择)。

如何选择和更新属于特定 tbl_A 项目的所有 tbl_B 项目?我如何获得整套 tbl_A 项及其关联的 tbl_B 项?

请不要使用通配符(选择 *)。为了简洁起见,我的示例每个只有 2 个字段;我需要看看它是如何通过使用字段来完成的。转换是可以接受的——所以 P1.aID 没问题。

我看过问题 Select in a many-to-many relationship in MySQL 但我不清楚它如何适用于我的情况。

最佳答案

创建一个将显示您想要的字段的 View

CREATE VIEW combined AS SELECT tbl_A.name, tbl_B.bName
FROM tbl_B INNER JOIN (tbl_A INNER JOIN tbl_M ON tbl_A.ID = tbl_M.AId) ON tbl_B.unique = tbl_M.Unique;

然后就可以像对表一样对 View 进行CRUD操作

关于mysql - 如何在多对多关系上进行 MySQL CRUD 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38253001/

相关文章:

php - 我想要来自 mysql 数据库的列的 Distinct 值和 orderby 另一列

安卓应用 : Old database still exists after switching to room database

ios - 检测 CoreData 中的多对多关系变化

javascript - 像 web-app 这样的 twitter 中的 Sequelize 中的多对多 self 引用

mysql - 稍后在项目中使用 MySQL 添加模型属性

mysql - 编写一个 SQL 查询,列出 cd 表中所有 CD 上出现的所有录音的录音 ID 和录音日期

mysql - 无法从我的数据库检索数据

Java Persistence 与 self 的多对多关系

MySQL count(*) 一个月内每天返回 [BLOB-2B] 而不是数字

mysql - Sql插入、获取最佳实践