• ベストアンサー

グループ化したいのですが

テーブルAに以下のような項目があります。 [MAIL_ID][SEND_DATE][USER_ID] テーブルBに以下のような項目があります。 [USER_ID][SEI][MEI] やりたい事は、 ・テーブルAとBを[USER_ID]をキーにして結合させたい。 ・テーブルAの[MAIL_ID]ごとにグループ化して1行にまとめたい。 ・テーブルBの[SEI]と[MEI]をつなげて1つの項目として表示させたい。 これを実現させるには、どういうSQLを書けば良いでしょうか? 私が試したのは、以下のSQL文です。 SELECT A.MAIL_ID, MIN(A.SEND_DATE) AS SEND_DATE,MIN( A.USER_ID) AS USER_ID,MIN(B.SEI) + MIN(B.MEI) AS ATESAKI FROM TABLEA A INNER JOIN TABLEB B ON A.USER_ID = B.USER_ID WHERE A.SEND_ID = '900001' GROUP BY A.MAIL_ID でも、これだと同じMAIL_IDが複数存在すると[SEI][MEI]が別人のものがくっついてしまいます。当然ですが。 グループ化する前に[SEI][MEI]を連結させる処理が必要なのだろうと思うのですが、それをどうすれば良いのかが分かりません...。 どうかよろしくお願いします。m(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

[SEI]と[MEI]がそれぞれ単独でMIN関数を使用されていますが、 これは連結後でも良いのでは? MIN( B.SEI + B.MEI ) みたいな感じで。 どうでしょうか?

ha3y
質問者

お礼

できました~!! 何か特別な関数とかを使わないといけないのかもという先入観から1週間くらい分からなかったんですが。 ありがとうございました。

その他の回答 (1)

回答No.2

同じ[MAIL_ID]で違う[USER_ID]のレコードが存在するということでしょうか? その場合[MAIL_ID]でグループ化した、どの[USER_ID]の[SEI][MEI]を出力したいのですか? (現在はそれぞれ別個に最小値を出力しているようですが) 最小値を出力するのでしたら[MIN(USER_ID)]の[SEI][MEI]を出力したほうが良いのでは?

ha3y
質問者

お礼

複数の人に同じメールを出す場合、[MAIL_ID]には同じ番号が入るようになっているのです。 >MIN(USER_ID)]の[SEI][MEI]を出力したほうが良いのでは? その通りです。そのやり方が分からなかったものでで...。

関連するQ&A