SQLについて教えてください。T1とT2があります。この2つのテーブルをjoinしたいです。T1にはitem_code,item_nameがあります。T2にはitem_code,item_statusがあります。


item_codeでリレーションを張っています。問題が、T1.item_codeにはコードが重複しない形ではいっています。T2.item_codeにはコードが重複した形で入っています。例えば、T1.item_codeに'001','002'...とはいっています。

T2.item_codeには'001','001','002','002'...で入っています。まずdistinctで重複をとってやり、その後でジョインで結合したいと思っています。

select distinct T2.item_codeの後に

select T1.item_code,T1.item_name,T2.item_status on T1.item_code = T2.item_code

とやりたいのですがどのようにこの二つを結合させたらよいでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2009/03/24 04:29:40
  • 終了:2009/03/31 04:30:02

回答(2件)

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 pahoo 5960 5695 633 2009-03-24 07:24:17
2 Kenz 104 95 3 2009-03-24 08:02:19
  • id:degucho
    使っているDBMSはなんですか?
    あと、STATUSはなにを出すのでしょうか?
    (同じitem_codeで複数ある?MAX?)
  • id:akaired
    Access2003を利用しています。T2.item_statusには1,2,3などの数値が入っています。1つのitem_codeに3つのitem_statusがくっついています。
  • id:degucho
    STATUSを出すならレコードは重複しないので単純に

    select T1.item_code
    ,T1.item_name
    ,T2.item_status
    from T1 join T2
    on T1.item_code = T2.item_code
    order by T1.item_code

    だと問題あるのでしょうか?
  • id:Mook
    T2 のレコードは1つのコードに3つのステータスがあるのなら、それをどのように結合したいのですか?

    DISTINCT は重複を省くためのものですが、 item_code, item_status をセットで考えるのであれば、
    T2(item_code, item_status)∋(10,100),(10,101),(10,102) は別の組み合わせですから、重複とはカウントしません。

    T1 ∋ (10, "dog") というデータに対し、
    T1 + T2 ∋(10, "dog", 100 ), (10, "dog", 101 ), (10, "dog", 102 )
    という結果を得たいのであれば、単に結合すればよいですが、そうでないとなれば まず T2 の中のどれを
    結合したいかという処理をする必要があります。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません