如何进行SQL连接以使值与提供的值相差4个表?

如何进行SQL连接以使值与提供的值相差4个表?,sql,database,postgresql,join,inner-join,Sql,Database,Postgresql,Join,Inner Join,我的标题可能不是很清楚,所以我做了一个小的模式来解释我试图实现的目标。xxxx\u uid标签是链接两个表的外键 目标:通过给出proj_uid值,从grids表中检索列 我不太擅长SQL连接,我不知道如何构建一个能够实现这一点的查询 实际上,我正在执行3个查询来执行该操作: 1) 这给了我一个res\u uid来处理: select rec_uid from receptor_results inner join results on results.res_uid = receptor_

我的标题可能不是很清楚,所以我做了一个小的模式来解释我试图实现的目标。
xxxx\u uid
标签是链接两个表的外键

目标:通过给出
proj_uid
值,从
grids
表中检索列

我不太擅长SQL连接,我不知道如何构建一个能够实现这一点的查询

实际上,我正在执行3个查询来执行该操作:

1) 这给了我一个
res\u uid
来处理:

select rec_uid from receptor_results 
inner join results on results.res_uid = receptor_results.res_uid
where receptor_results.res_uid = res_uid_VALUE order by rec_uid asc limit 1
从results中选择res\u uid,其中results.proj\u uid=res\u uid asc limit 1的值顺序“

2) 这为我提供了一个
记录uid

select rec_uid from receptor_results 
inner join results on results.res_uid = receptor_results.res_uid
where receptor_results.res_uid = res_uid_VALUE order by rec_uid asc limit 1
3) 从
grids
表中获取所需的网格列:

select grid_name from grids 
inner join receptors on receptors.grid_uid = grids.grid_uid 
where receptors.rec_uid = rec_uid_VALUE;

是否可以执行一个SQL语句,以获得与我实际执行的3个SQL语句相同的结果?

在查询中,您不限于一个联接:

select grids.grid_name 
from grids 
inner join receptors
    on receptors.grid_uid = grids.grid_uid 
inner join receptor_results 
    on receptor_results.rec_uid = receptors.rec_uid
inner join results 
    on results.res_uid = receptor_results.res_uid
where results.proj_uid = VALUE;
关于名称的一个小说明,通常在sql中,表是以单个项命名的,而不是以组命名的。因此,“结果”不是“结果”,而“受体”不是“受体”等等。当您使用sql时,这将是有意义的,像您这样的名称看起来会很奇怪。此外,键入的字符也少了一个


是的,这是可能的