プロが教える店舗&オフィスのセキュリティ対策術

テーブル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

A 回答 (2件)

[SEI]と[MEI]がそれぞれ単独でMIN関数を使用されていますが、


これは連結後でも良いのでは?
MIN( B.SEI + B.MEI )
みたいな感じで。
どうでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/09/15 16:57

同じ[MAIL_ID]で違う[USER_ID]のレコードが存在するということでしょうか?



その場合[MAIL_ID]でグループ化した、どの[USER_ID]の[SEI][MEI]を出力したいのですか?
(現在はそれぞれ別個に最小値を出力しているようですが)
最小値を出力するのでしたら[MIN(USER_ID)]の[SEI][MEI]を出力したほうが良いのでは?
    • good
    • 0
この回答へのお礼

複数の人に同じメールを出す場合、[MAIL_ID]には同じ番号が入るようになっているのです。

>MIN(USER_ID)]の[SEI][MEI]を出力したほうが良いのでは?

その通りです。そのやり方が分からなかったものでで...。

お礼日時:2005/09/15 16:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!