はじめまして。
早速ですが、とても困ってます。
テーブル「tbメール文」
| field | type | null | key | defult | Extra |
| 送信ID | bigint(20) | × | pri | null |auto_increment|
| 送信文 | TEXT | × | | null | |

テーブル「tbメールアドレス」
| field | type | null | key | defult | Extra |
| Eアドレス |varchar(64) | × | pri | null | |
| 登録日 |timestamp | × | | null | |

テーブル「tb送信リスト」
| field | type | null | key | defult |Extra|
| 送信ID |bigint(20) | × | pri | null | |
| Eアドレス|varchar(64)| × | pri | null | |

(1)メールを誰にアドレスに送ったか管理したいです。(「tb送信リスト」を作りたい)
(2)「tbメールアドレス」の登録日を固定値で検索にかけ(プログラム処理)、引っかかった複数レコードをSELECTします。
(3)送信IDは「tbメール文」の送信IDの最大値を固定ですべて(2)で作った全レコードに紐付ます。

(1)(2)(3)を踏まえ、「tb送信リスト」にINSERT~SELECTで一気に入れたいです。

出来るだけやったSQL文載せます。

INSERT INTO tb送信リスト (送信ID, Eアドレス)
SELECT MAX(tbメール文.送信ID), tbメールアドレス.Eアドレス)
FROM tbメール文, tbメールアドレス

よろしくお願します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

なんだか、括弧の数が合ってないけど、順番に作っていけば、できると思うけど?



>(2)「tbメールアドレス」の登録日を固定値で検索にかけ(プログラム処理)、引っかかった複数レコードをSELECTします。
→ まずこの複数レコードをselectしてみる
select `Eアドレス` from `tbメールアドレス` where `登録日` >= '20090524000000'

>(3)送信IDは「tbメール文」の送信IDの最大値を固定ですべて(2)で作った全レコードに紐付ます
→スカラー値を抽出するselect文を作る
select max(`送信ID`) from `tbメール文`

これをサブクエリとし、(2)のselect文のカラム値に入れます。カラム名が同じなので、table名付きで指定するのが無難。このサブクエリはMySQL4.1以降でないと使えません。
select (select max(body.`送信ID`) from `tbメール文` as body) as `送信ID`
, address.`Eアドレス` from `tbメールアドレス` as address
where address.`登録日`>= '20090522000000'

insert 文にこのselect 文を繋げる

INSERT INTO `tb送信リスト` (`送信ID`, `Eアドレス`)
select (select max(body.`送信ID`) from `tbメール文` as body) as `送信ID`
, address.`Eアドレス` from `tbメールアドレス` as address
where address.`登録日`>= '20090522000000'
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありません。
プログラムで無理やり解決してしまいました。
今度からは、上記やり方でやってみようとおもいます。

ありがとうございました。

お礼日時:2009/06/17 14:17

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

関連するカテゴリからQ&Aを探す


人気Q&Aランキング

おすすめ情報