如何在SQL中多次关联一个表?

问题描述 投票:0回答:3

我想关联两个表和一个关联表。这些表是:Person的主键为id_personActivity的主键为id_activity和一个与前两个表相关的表:Activity_Person包含主键和外键id_activityid_person

使用旧的JOIN格式关联此表将起作用:

select * from activity, person, activity_person
where activity.id_activity = activity_person.id_activity and person.id_person = activity_person.id_person;

这将显示每个人参加的活动。

但是现在我正在学习JOIN,但我不知道关联出现两次的表(Activity_Person)的正确格式是什么。

我已经尝试过:

select * from 
person inner join activity_person on person.id_person = activity_person.id_person,
activity inner join activity_person on activity.id_activity = activity_person.id_activity;

但出现以下错误:

不是唯一的表格/别名:'activity_person'

什么是正确的格式?

提前感谢。

mysql sql join inner-join
3个回答
0
投票

您在这里不需要两次activity_person。刚做

select *
    from person
    inner join activity_person on person.id_person = activity_person.id_person
    inner join activity on activity.id_activity = activity_person.id_activity;

0
投票

我认为您只需要两个联接:

select *
from person p inner join
     activity_person ap
     on p.id_person = ap.id_person inner join
     activity a
     on a.id_activity = ap.id_activity;

我不确定您为什么要在查询中重复activity_person

还要注意,表别名使查询更易于编写和阅读。


0
投票

您的语法不正确。

select * from activity, person, activity_person
where activity.id_activity = activity_person.id_activity
      and person.id_person = activity_person.id_person;

等效于:

select *
from person
inner join activity_person
on person.id_person = activity_person.id_person -- <- remove the comma there
inner join activity
on activity.id_activity = activity_person.id_activity;

基本上,语法是这样的:

SELECT <the fields to select>
FROM <table name>
JOIN <table to join>
ON <joining condition>
-- if you want to add another table :
JOIN <new table to join>
ON <joining condition>
© www.soinside.com 2019 - 2024. All rights reserved.