2016-07-05 29 views
2

我的标题可能不是很清楚,所以我提出了一个模式来解释我想要达到的目标。 xxxx_uid标签是连接两个表的外键。我该如何做一个SQL连接以获得值远离所提供的值的4个表?

enter image description here

目标:通过给出proj_uid值检索来自grids表中的列。

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

其实,我做3个查询执行的操作:

1)这给了我res_uid一起工作:

select res_uid from results where results.proj_uid = VALUE order by res_uid asc limit 1"

2)这给了我一个rec_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个实际上正在做的结果?

+2

是的,这是可能的 – Hogan

回答

2

你不是局限于一个JOIN在查询:

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; 
1
select g.grid_name 
from results r 
join resceptor_results rr on r.res_uid = rr.res_uid 
join receptors rec on rec.rec_uid = rr.rec_uid 
join grids g on g.grid_uid = rec.grid_uid 
where r.proj_uid = VALUE 

关于名称的小纸条,通常在SQL表被命名为单个项目而不是组。因此“结果”不是“结果”和“受体”而不是“受体”等等。当你使用sql时,这会很有意义,并且像你这样的名字看起来很奇怪。另外,少输入一个字符!

相关问题