2012-01-07 25 views
0

事前に結合されたテーブルを別のテーブルと並べて結合しようとしていますが、うまくいかないようです。ここで事前結合されたテーブルと別のテーブルの結合

はコードです:この行で何か間違っ

FROM dyn_dyndomrun d, cath_domains a 
     INNER JOIN dyn_conformer c ON d.confid1 = c.id 
     INNER JOIN dyn_domainregion r ON r.domainid::varchar(8) = d.ddid 
     INNER JOIN dyn_conformer AS c ON a.pdbcode::character(4) = c.pdbcode 

ここではエラーがありますされ

SELECT 
    r.domainid, 
    r.dombegin AS DomainStart, 
    r.domend AS Domain_End, 
    d.ddid, 
    d.confid1 AS confid, 
    c.pdbcode, 
    c.chainid, 
    a.pdbcode AS "cath_pdbcode", 
    c.pdbcode 
FROM dyn_dyndomrun d, cath_domains a 
    INNER JOIN dyn_conformer c ON d.confid1 = c.id 
    INNER JOIN dyn_domainregion r ON r.domainid::varchar(8) = d.ddid 
    INNER JOIN dyn_conformer AS c ON a.pdbcode::character(4) = c.pdbcode 
UNION ALL 
SELECT 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    d.ddid, 
    d.confid2, 
    c.pdbcode, 
    c.chainid 
FROM dyn_dyndomrun d 
    INNER JOIN dyn_conformer c ON d.confid2 = c.id 
    ORDER BY confid ASC 

ERROR: invalid reference to FROM-clause entry for table "d" 
LINE 11: INNER JOIN dyn_conformer c ON d.confid1 = c.id 
             ^
HINT: There is an entry for table "d", but it cannot be referenced from this part of the query. 


********** Error ********** 

ERROR: invalid reference to FROM-clause entry for table "d" 
SQL state: 42P01 
Hint: There is an entry for table "d", but it cannot be referenced from this part of the query. 
Character: 236 

終わりに、私が持っていると思いますテーブルには、"domainid, domainstart, domainend, ddid, confid, chainid, pdbcode from conformer and the chain id"とそれに沿って、私は新しい列のセットを持っていたいと思います別のテーブル("pdbcode from cath_domains, cathbegin, cathend"など)。

conformerとcath_domainsのpdbcodeが一致しているため、それらを相互参照したいと思います。

私は間違ったやり方をしていますか?

+1

あなたが遭遇したエラーを投稿してください。 – Kenaniah

+0

'ERROR:テーブル" d "のFROM句エントリへの無効な参照 行11:内部結合dyn_conformer c ON d.confid1 = c.id ^ ヒント:テーブル" d "のエントリがありますが、クエリのこの部分から参照されます。 ********** **********エラー ERROR:テーブル "D" SQL状態のためのFROM句エントリに無効な参照:42P01 ヒント:ありテーブル "d"のエントリですが、クエリのこの部分から参照することはできません。 文字:236' – Jeiman

+0

私の質問でもエラーを投稿しました。 – Jeiman

答えて

2

暗黙的なクロス結合をやめる。また、ypercubeが指摘しているように、いくつかの他の小さなものをクリーンアップする必要があります。特に重複した結合を削除する必要があります。

SELECT 
    r.domainid, 
    r.dombegin AS DomainStart, 
    r.domend AS Domain_End, 
    d.ddid, 
    d.confid1 AS confid, 
    c.pdbcode, 
    c.chainid, 
    a.pdbcode AS "cath_pdbcode", 
    c.pdbcode 
FROM dyn_dyndomrun d 
    INNER JOIN dyn_conformer c ON d.confid1 = c.id 
    INNER JOIN dyn_domainregion r ON r.domainid::varchar(8) = d.ddid 
    INNER JOIN cath_domains a ON a.pdbcode::character(4) = c.pdbcode 
UNION ALL 
SELECT 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    NULL, 
    d.ddid, 
    d.confid2, 
    c.pdbcode, 
    c.chainid 
FROM dyn_dyndomrun d 
    INNER JOIN dyn_conformer c ON d.confid2 = c.id 
    ORDER BY confid ASC 
関連する問題