如何从三个不同的表中获取列?

时间:2014-04-08 07:30:26

标签: mysql database join inner-join

我有三个不同的表,如下所述

mRNA_GO

  • MSU7_LOC
  • GO_ID

基因本体论

  • GO_ID(主键)
  • 分类
  • 期限
  • 证据

miRNA_mRNA

  • miRNA_ID
  • MSU7_LOC

表1通过GO_ID与表2连接,并通过MSU7_LOC与表3连接。

我想在输出中跟踪列。

  • table1.MSU7_LOC
  • table2.GO_ID
  • table2.Category
  • table2.term
  • table2.Evidence
  • tabke3.miRNA_ID

我写了两个差异查询

查询1

select gene_ontology.go_id , gene_ontology.category, gene_ontology.evidence, gene_ontology.term , mrna_go.MSU7_LOC 
       from gene_ontology  inner join mrna_go on mrna_go.go_id = gene_ontology.go_id 
       where mrna_go.go_id in ('GO:0009058') ;

这会给我以下列

  • table1.MSU7_LOC
  • table2.GO_ID
  • table2.Category
  • table2.term
  • table2.Evidenc

查询2

SELECT mrna_go.go_id, mirna_mrna.mirna 
       from  mirna_mrna inner join  mrna_go on mrna_go.MSU7_LOC = mirna_mrna.MSU7_LOC 
       where mrna_go.go_id in ('GO:0009058') ;

会给我

  • table2.GO_ID
  • tabke3.miRNA_ID

任何人都可以告诉我如何只使用一个查询而不是两个不同的查询来获取输出..

2 个答案:

答案 0 :(得分:1)

加入第三个表

SELECT 
mg.go_id,
mm.mirna ,
g.go_id , 
g.category, 
g.evidence, 
g.term , 
mg.MSU7_LOC 
FROM  mirna_mrna mm
inner join  mrna_go mg on mg.MSU7_LOC = mm.MSU7_LOC 
inner join  gene_ontology g  on mg.go_id = g.go_id 
where mg.go_id in ('GO:0009058') ;

答案 1 :(得分:0)

只需添加第二个连接;

SELECT gene_ontology.go_id , gene_ontology.category, gene_ontology.evidence, gene_ontology.term , mrna_go.MSU7_LOC, mrna_go.go_id, mirna_mrna.mirna 
  FROM gene_ontology  
  INNER JOIN mrna_go ON mrna_go.go_id = gene_ontology.go_id 
  INNER JOIN mirna_mrna ON mrna_go.MSU7_LOC = mirna_mrna.MSU7_LOC
  WHERE mrna_go.go_id IN ('GO:0009058') ;