这个问题是许多学习生物信息学和DNA数据分析新手的人正在努力解决的问题:
假设我有20个具有相同列标题的表格。每个表代表患者样品,每行代表在该样品中发生突变的基因座(位点)。每个站点由两列唯一标识 - 染色体编号和碱基编号(例如1和43535,1和33456,1和3454353)。有几个列给出了每个突变的不同特征,包括一个名为Gene的列,它在该位点给出基因。多个位点可以在基因中突变 - 这意味着Gene列可以在一个表中多次具有相同的值。 / p>
我想同时查询所有这些表,让我们说Gene。我从Gene列输入一个值,我想要输出基因名称存在于Gene列中的所有表(样本)的名称以及每个样本的整个行(最好),以便我可以在一个输出页面上比较多个样本中该基因突变的特征。
我还想输入一个数字4,并希望输出20个患者中至少4个突变的基因列表(20个表中至少4个中名称出现在Gene列中的基因列表)。 / p>
这样做的“最简单方法”是什么?除了这两个问题之外,假设我想要进行更灵活的查询,那么“最佳方式”是什么?
我是医学博士,没有任何特定的软件专业知识,但我愿意花费必要的时间来构建这个查询系统。几行代码不会让我失望..
例如数据:
Func Gene ExonicFunc Chr Start End Ref Obs
exonic ACTRT2 nonsynonymous SNV 1 2939346 2939346 G A
exonic EIF4G3 nonsynonymous SNV 1 21226201 21226201 G A
exonic CSMD2 nonsynonymous SNV 1 34123714 34123714 C T
这只是列的三分之一。删除了多个列以适应页面大小...
谢谢。
答案 0 :(得分:1)
创建一个联合所有表的视图。您可能应该添加有关哪个表ti来自的其他信息:
create view allpatients as
select 'a' as whichtable, t.*
from tableA t
union all
select 'b' as whichtable, t.*
from tableB t
...
您可能会发现通过创建包含所有患者的表格来“实例化”视图更容易。只需要一个存储过程,通过组合20个表来重新创建表。
或者,您可能会发现您拥有大型单个表(数百万行)。在这种情况下,您可能希望将每个原始表视为一个分区。
答案 1 :(得分:0)
如果您拥有的是一堆Excel文件,可以将它们全部导入到同一个表中,并为患者ID添加一个不同的列。没有必要为此创建20个不同的表 - 事实上,这是一个坏主意。
完成后,转到Access'查询设计,SQL视图并使用这些查询:
创建一个返回输入基因名称的所有字段的查询:
select *
from gene_data
where gene = [GeneName]
创建一个返回超过4个样本中突变的基因名称的查询:
select gene
from
(select gene, sample_id
from gene_data
group by gene, sample_id) g
group by gene
having count(sample_id) > 4
在此之后,更改为设计视图 - 您将看到如何使用GUI创建类似的查询。