【问题标题】:Query table with multiple joined values查询具有多个连接值的表
【发布时间】:2018-05-30 02:06:00
【问题描述】:

我创建了一个连接六个表的查询:

SELECT a.accession, b.value, c.name, d.description, e.value, f.seqlen, f.residues
FROM chado.dbxref a inner join chado.dbxrefprop b on a.dbxref_id = b.dbxref_id
inner join chado.biomaterial d on b.dbxref_id = d.dbxref_id
inner join chado.feature f on d.dbxref_id = f.dbxref_id
inner join chado.biomaterialprop e on d.biomaterial_id = e.biomaterial_id
inner join chado.contact c on d.biosourceprovider_id = c.contact_id;

输出:

我目前正在使用一个名为 Chado (http://gmod.org/wiki/Chado_Tables) 的 PostgreSQL 架构。我尝试遵守预先存在的模式导致我在同一个表中存放多个连接值(dbxrefprop 表中的两个不同值,biomaterialprop 表中的三个不同值)。查询数据库会导致大量冗余输出。有没有办法通过修改我的查询语句来减少输出冗余?理想情况下,我希望输出类似于以下内容:

test001 | GB0101 | source011 | Faaberg,K.; Lyoo,K.; Korol,D.M. | serum | T1 | Iowa, USA | 01 Jan 2005 | 1234 | AUGAACGCCUUGCAUUACUAUGACUAUGAUU

【问题讨论】:

  • 我认为您正在寻找的是 mysql 中的 group_concat() 之类的东西,我不是 postgresql 的大用户,但我认为我发现了与 group_concat 在 mysql 中的功能非常相似的东西。 stackoverflow.com/questions/2560946/…
  • 感谢 Michael T 的快速回复。我对 SQL 比较陌生,并且很难清楚地表达一个问题。一个例子是我能设法证明我的问题的最好例子。我同意,类似于 group_concat() 的函数似乎是我需要的。我会试一试。再次感谢!
  • 结束问题的更好方法是让@MIchaelT 回答它并获得代表点 - 或者 - 自己回答然后接受它,这样我们就不会再收到另一个未回答的问题.
  • 根据您的建议,我已将更新更改为答案,以更好地表明我的问题已得到解决。谢谢。

标签: postgresql


【解决方案1】:

工作查询语句:

SELECT a.accession, string_agg(distinct b.value, ' | ' ORDER BY b.value) AS bvalue_list, c.name, d.description, string_agg(distinct e.value, ' | ' ORDER BY e.value) AS evalue_list, f.seqlen, f.residues
FROM chado.dbxref a INNER JOIN chado.dbxrefprop b ON a.dbxref_id = b.dbxref_id
INNER JOIN chado.biomaterial d ON b.dbxref_id = d.dbxref_id
INNER JOIN chado.feature f ON d.dbxref_id = f.dbxref_id
INNER JOIN chado.biomaterialprop e ON d.biomaterial_id = e.biomaterial_id
INNER JOIN chado.contact c ON d.biosourceprovider_id = c.contact_id
GROUP BY a.accession, c.name, d.description, f.seqlen, f.residues;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多