如何在SQL中多次关联一个表?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SQL中多次关联一个表?相关的知识,希望对你有一定的参考价值。
我想关联两个表和一个关联表。这些表是:Person
的主键为id_person
,Activity
的主键为id_activity
和一个与前两个表相关的表:Activity_Person
包含主键和外键id_activity
和id_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'
什么是正确的格式?
提前感谢。
答案
您在这里不需要两次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;
另一答案
我认为您只需要两个联接:
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
。
还要注意,表别名使查询更易于编写和阅读。
另一答案
您的语法不正确。
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>
以上是关于如何在SQL中多次关联一个表?的主要内容,如果未能解决你的问题,请参考以下文章