Sql 当行与其他表中的多行匹配时联接表
我想连接3个表(如下所示),但我不知道如何连接: 表1Sql 当行与其他表中的多行匹配时联接表,sql,postgresql,Sql,Postgresql,我想连接3个表(如下所示),但我不知道如何连接: 表1 vendor_id --------- 1 2 3 4 表2 cuisine_type | vendor_id ------------------------ a |1 b |1 c |1 表3 cuisine_type|cuisine -------------------- a |pizza b |rice c
vendor_id
---------
1
2
3
4
表2
cuisine_type | vendor_id
------------------------
a |1
b |1
c |1
表3
cuisine_type|cuisine
--------------------
a |pizza
b |rice
c |steak
我想加入3个表并得到以下结果:
vendor_id|cuisine_type|cuisine
------------------------------
1 |a, b, c |pizza, steak, rice
2.......
我希望这是有道理的。我对postgreSQL非常陌生,所以可能我遗漏了一些非常简单/明显的东西。这是一个简单的连接和基于供应商id的聚合:
select v.vendor_id,
string_agg(ct.cuisine_type, ', ') as cuisine_type,
string_agg(c.cuisine, ', ') as cuisine
from table_1 as v
join table_2 as ct on v.vendor_id = ct.vendor_id
join table_3 as c on ct.cuisine_type = c.cuisine_type
group by v.vendor_id;
这是一个基于供应商id的简单连接和聚合:
select v.vendor_id,
string_agg(ct.cuisine_type, ', ') as cuisine_type,
string_agg(c.cuisine, ', ') as cuisine
from table_1 as v
join table_2 as ct on v.vendor_id = ct.vendor_id
join table_3 as c on ct.cuisine_type = c.cuisine_type
group by v.vendor_id;
这是一个基于供应商id的简单连接和聚合:
select v.vendor_id,
string_agg(ct.cuisine_type, ', ') as cuisine_type,
string_agg(c.cuisine, ', ') as cuisine
from table_1 as v
join table_2 as ct on v.vendor_id = ct.vendor_id
join table_3 as c on ct.cuisine_type = c.cuisine_type
group by v.vendor_id;
这是一个基于供应商id的简单连接和聚合:
select v.vendor_id,
string_agg(ct.cuisine_type, ', ') as cuisine_type,
string_agg(c.cuisine, ', ') as cuisine
from table_1 as v
join table_2 as ct on v.vendor_id = ct.vendor_id
join table_3 as c on ct.cuisine_type = c.cuisine_type
group by v.vendor_id;
你的桌子结构看起来有点奇怪。例如,为什么每种烹饪类型只有一种烹饪?通常,我希望供应商与菜系相关联,然后每种菜系都有一种类型 然而,这不是这个问题。根据您提供的数据,您可以使用
string\u agg()
:
你的桌子结构看起来有点奇怪。例如,为什么每种烹饪类型只有一种烹饪?通常,我希望供应商与菜系相关联,然后每种菜系都有一种类型 然而,这不是这个问题。根据您提供的数据,您可以使用
string\u agg()
:
你的桌子结构看起来有点奇怪。例如,为什么每种烹饪类型只有一种烹饪?通常,我希望供应商与菜系相关联,然后每种菜系都有一种类型 然而,这不是这个问题。根据您提供的数据,您可以使用
string\u agg()
:
你的桌子结构看起来有点奇怪。例如,为什么每种烹饪类型只有一种烹饪?通常,我希望供应商与菜系相关联,然后每种菜系都有一种类型 然而,这不是这个问题。根据您提供的数据,您可以使用
string\u agg()
: