Sql 当行与其他表中的多行匹配时联接表

Sql 当行与其他表中的多行匹配时联接表,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

我想连接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           |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()