mysql - 我在下表之间建立了多对多关系,我做得对吗?其次我想要对他们进行联接查询

标签 mysql sql sql-server database join

下表之间存在多对多关系:

create table instructors
(i_id int not null identity(1,1) primary key,
i_name varchar(50), etc...)

create table members
(
m_id int not null identity(1,1) primary key,
m_name varchar(50, etc...))

create table schedule
(sch_id int not null identity(1,1) primary key,
sch_session varchar(10))<BR>
-- session is(morning, afternoon, evening)<br>

下面是我的连接表

create table Ins_Mem_Sch
(ins_mem_sch_id int not null identity(1,1) primary key,
i_id int not null foreign key references instructors(i_id),
m_id int not null foreign key references members(m_id),
sch_id int not null foreign key references schedules(sch_id)
)

我想知道到目前为止我所做的是否正确,其次我尝试通过查询加入它们,但我不能,也许是因为我没有练习过多对多关系的联接,我不是一个完美的程序员,所以我想要一个连接查询来从所有表中获取数据。 我将感谢您的帮助。
问候,

最佳答案

这些表看起来不错,唯一的一点是最后一个表Ins_Mem_Sch不需要主键ins_mem_sch_id

现在加入这些表非常容易。考虑一下这种情况,当表 Ins_Mem_Sch 中的行具有 i_id 、 m_id 和 sch_id 时,您可以使用以下类型的联接

(我提供了 MYSQL 示例,因为您用 MYSQL 标记了问题)

select 
i.i_name,
m.m_name,
s.sch_session 
from 
Ins_Mem_Sch ims
inner join instructors i on i.i_id = ims.i_id
inner join members m on m.m_id = ims.m_id
inner join schedule s on s.sch_id = ims.sch_id

以上只是列出匹配所有表的数据的示例。 还有许多其他情况,您可能需要根据要求获取数据,并且在不了解这些情况的情况下很难做出评论。

关于mysql - 我在下表之间建立了多对多关系,我做得对吗?其次我想要对他们进行联接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23361732/

相关文章:

PHP/MySQL 一个数组中包含两行

mysql - 使用具有相同值的列连接 2 个表

sql - 第二个最大值和最小值

mysql - 在插入时将唯一记录隐式插入外键表

php - 存储用户 Twitter 关注者数据的最佳方式

sql - T-SQL 分组依据;包含或如果有

sql - SQL Server 2008 中的 COUNT (DISTINCT column_name) 与 COUNT (column_name) 之间存在差异吗?

c# - c#中的批量查询插入

mysql - 如何从 mysql-general.log 文件中 grep 与特定数据库相关的日志?

SQL 对分区上的不同计数进行累积