2010年12月 7日

[pgsql-jp: 40596] Re:JOIN 構文についてご指導下さい

「あかいね」さん
佐々木と申します。
次のような SQL 文にします。

SELECT
TBH_SIWAKEHST.ID,
TBH_SIWAKEHST.TXT_SIWAKEDATE,
TBH_SIWAKEHST.TXT_ATESAKI,

B.TXT_KAMOKUTEXT,
C.TXT_KAMOKUTEXT,
TBH_SIWAKEHST.INT_AMOUNT

FROM
TBH_SIWAKEHST, TBM_KAMOK B, TBM_KAMOK C
WHERE
B.ID = TBH_SIWAKEHS.TXT_KARIKATA AND
C.ID = TBH_SIWAKEHS.TXT_KASHIKATA

または

SELECT
TBH_SIWAKEHST.ID,
TBH_SIWAKEHST.TXT_SIWAKEDATE,
TBH_SIWAKEHST.TXT_ATESAKI,
B.TXT_KAMOKUTEXT,
C.TXT_KAMOKUTEXT,
TBH_SIWAKEHST.INT_AMOUNT

FROM
TBH_SIWAKEHST
INNER JOIN TBM_KAMOK B ON B.ID = TBH_SIWAKEHS.TXT_KARIKATA
INNER JOIN TBM_KAMOK C ON C.ID = TBH_SIWAKEHS.TXT_KASHIKATA

です。

Kiyofumi MATSUMOTO <k_matsumoto@xxxxx> wrote:

> 「あかいね」と申します。
>
> Microsoft Access2007 + POSTGRES 9.0でDBの勉強を始めたばかりの者です。
> どうぞよろしくお願い致します。
>
> これまでエクセルで管理していた経理関係のデータをDBで管理しようと
> しています。
>
> 経理科目はテーブル TBM_KAMOKU にあり、TBM_KAMOKUは
>
> ID
> TXT_KAMOKUTEXT
>
> 以上2フィールドです。IDは科目コードが格納されるテキスト型で、
> TXT_KAMOKUTEXTは科目名を格納するテキスト型です。
>
> 一方、元になる仕訳データは TBH_SIWAKEHST にあり、TBH_SIWAKEHST は
>
> ID
> TXT_SIKWAKEDATE
> TXT_ATESAKI
> TXT_KARIKATA
> TXT_KASHIKATA
> INT_AMOUNT
>
> 以上6フィールド、IDのみシリアル型で他は全てテキスト型です。
>
> これを、科目コードではなく科目名で表示させるSELECT文を発行したい
> のですが、
>
>
> SELECT
> TBH_SIWAKEHST.ID,
> TBH_SIWAKEHST.TXT_SIWAKEDATE,
> TBH_SIWAKEHST.TXT_ATESAKI,
>
> TBM_KAMOKU.TXT_KAMOKUTEXT, /* ←ここに借方科目を出したい */
> TBM_KAMOKU.TXT_KAMOKUTEXT,  /* ←ここに貸方科目を出したい */
>
> TBH_SIWAKEHST.INT_AMOUNT
>
> FROM
> TBH_SIWAKEHST
>
> INNER JOIN TBM_KAMOKU ON TBH_SIWAKEHST.TXT_KARIKATA=TBM_KAMOKU.ID;
>
>
> これだとTXT_KARIKATAを引数とした同じ内容の列が2行表示されます。
> (これは理解出来ます)
> したがって、TXT_KASHIKATAを引数とした列を表示させるためにJOIN構文を
> 加工しようとしたのですが、例えば
>
> FROM
> (TBH_SIWAKEHST
> INNER JOIN TBM_KAMOKU ON TBH_SIWAKEHST.TXT_KARIKATA=TBM_KAMOKU.ID)
> INNER JOIN TBM_KAMOKU ON TBH_SIWAKEHST.TXT_KASHIKATA=TBM_KAMOKU.ID;
>
> などとしても
>
> ERROR: テーブル名"tbm_kamoku"が複数指定されました
>
> となります。
>
> この場合どのようにすれば良いでしょうか?
> ご指導よろしくお願い致します。

投稿者 xml-rpc : 2010年12月 7日 13:18
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/100590
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。