gpt4 book ai didi

sql - 困难的SQL查询所有和任何情况

转载 作者:行者123 更新时间:2023-12-03 18:33:48 25 4
gpt4 key购买 nike

我不知道如何编写SQL查询。

给定数据:
几个特征标识符整数-假设1和447。

我正在寻找domain_ids,我将在其中找到分配给特定特征的snp。当SNP的genomic_pos在域startend之间且chr_id相同时,SNP在该域中。共有两种情况:


在所有情况下,我都在寻找可以从所有给定特征中找到snps的域。换句话说,所有特征在域中都有其snp代表。
无论如何,我都在寻找可以从任何给定域中找到snps的域。换句话说,仅找到域中任何特征的一个snp代表就足够了。


我已经解决了所有情况,但我坚持所有情况:(

这是任何代码:

SELECT DISTINCT domains.domain_id
FROM snps JOIN traits_snps ON snps.snp_id = traits_snps.snp_id
JOIN traits ON traits.trait_id = traits_snps.trait_id
JOIN chromosomes ON snps.chr_id = chromosomes.chr_id
JOIN domains ON domains.chr_id = chromosomes.chr_id
WHERE traits.trait_id in (447,1 ) -- <-- HERE GOES TRAIT IDS
AND genomic_pos BETWEEN start AND end
AND domains.chr_id = snps.chr_id;


这是我在SQLite中的数据库。 enter image description here

最佳答案

如果我理解正确,您可以使用group byhaving做您想做的事情:

SELECT d.domain_id
FROM snps s JOIN
traits_snps ts
ON s.snp_id = ts.snp_id JOIN
traits t
ON t.trait_id = ts.trait_id JOIN
chromosomes c
ON s.chr_id = c.chr_id JOIN
domains d
ON d.chr_id = c.chr_id AND
d.chr_id = s.chr_id -- JOIN conditions should be in ON clauses
WHERE t.trait_id in (447, 1) AND -- <-- HERE GOES TRAIT IDS
genomic_pos BETWEEN start AND end
GROUP BY d.domain_id
HAVING COUNT(DISTINCT t.trait_id) = 2;

关于sql - 困难的SQL查询所有和任何情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41717124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com