Возможная ошибка в команде Select InterfaceDist - PullRequest
0 голосов
/ 14 октября 2018

Я новичок в использовании SQL.Мне было интересно, может ли быть ошибка в этой программе.

/* Insert to interface table all atoms that have diffASA>0*/
insert into NinterfaceAtom(PDB,Chain,Residue,ResId,Symbol,atom,diffASA)
select PDB,Chain,Residue,ResId,Symbol,Atom,max(ASA)-min(ASA) from perAtomASA
group by PDB,Chain,Residue,ResId,Symbol,Atom
having stddev(ASA)>0;
/* Insert to interface table all atoms that have enough distance */
insert ignore into NinterfaceAtoms (PDB,Chain,Residue,ResId,Symbol,atom)
select asa.PDB,asa.Chain,asa.Residue,asa.ResId,asa.Symbol,dist.Atom from interfaceDist dist
inner join
    perAtomASA asa
on
    dist.PDB=asa.PDB and
    dist.Chain=asa.Chain and
    dist.ResId=asa.ResId and
    dist.Symbol=asa.Symbol and
    Seperated=0

Я просто не уверен, почему программист передо мной поставил asa.PDB вместо dist.PDB во внутреннем разделе соединения.Я думал, что восьмую строку нужно изменить с:

select asa.PDB,asa.Chain,asa.Residue,asa.ResId,asa.Symbol,dist.Atom from interfaceDist dist

на:

select dist.PDB,dist.Chain,dist.Residue,dist.ResId,dist.Symbol,dist.Atom from interfaceDist dist

Это правильно?Благодаря.

1 Ответ

0 голосов
/ 14 октября 2018

Вы присоединяетесь к asa и dist.Совершенно логично, что их значения проверяются, чтобы убедиться, что в результате будут только совпадающие пары.Поэтому, если у вас нет веских оснований полагать, что в строке

dist.PDB=asa.PDB

вам нужно dist.PDB вместо asa.PDB, команда выглядит корректной.И если это будет правильно

dist.PDB=dist.PDB

, тогда это будет тривиально, и было бы бессмысленно вообще проверять эту часть.Когда вы обнаруживаете ошибки, вам нужно либо увидеть поведенческие проблемы программного обеспечения, либо понять код, который вы просматриваете.

EDIT

В предложении select можно использовать asa.PDB илиdist.PDB, потому что они равны из-за условия on, обеспечивающего их равенство.Если они разные, то пары не будет в результате.Таким образом, с точки зрения ценностей это не имеет значения.Но если интуитивно понятнее иметь dist.PDB в select, то вы можете изменить его (в этом нет никакого вреда, потому что значение точно такое же), чтобы код был более читабельным и позже,если код изменился, и эти два больше не должны быть равны, у вас не будет новых ошибок из голубого неба.

...