一尘不染

根据第三个表中定义的关系联接两个表

sql

我有两个表Activity和Action。可以为一项活动执行一个或多个动作。活动和动作之间的关系在称为活动动作的第三张表中给出。

我如何使用sql语句检索结果集,该结果集告诉我哪些操作适用于每个活动?这是表格结构

活动表 -ActivityId(PK),ActivityText

动作表 -ActionId(PK),ActionText

ActivityAction -ActivityActionId(PK),ActivityID,ActionID

我想要格式的结果表

活动,适用动作

(“活动”列应显示ActivityText,而“适用动作”应显示ActionText)

你能指导我吗?

谢谢你。


阅读 156

收藏
2021-03-17

共1个答案

一尘不染

这应该可以解决问题

SELECT Activity.ActivityText as Activity, Action.ActionText as ApplicableAction
FROM ActivityAction
    INNER JOIN Activity
        ON ActivityAction.ActivityId = Activity.ActivityId
    INNER JOIN Action 
        ON ActivityAction.ActionId = Action.ActionId

您应该阅读数据库中的JOINS。这是一个很好的起点:

http://en.wikipedia.org/wiki/Join_%28SQL%29

基本上,这里我们有活动和动作之间的多对多关系,这可以通过使用称为ActivityAction的联接表通过两个一对多的关系来解决。

为了取回所需的数据,我们使用适当的PK和FK列将ActivityAction连接到每个表,然后在SELECT中选择字符串列

2021-03-17