人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

データベースの設計に関してアイデアをお願いします。

※MySQL

今、メールを送信するプログラムを作成しています。

登録された送り先から順番に1通1通送信しています。

質問文が長くなりましたので、
http://webtomake.hatenablog.com/entry/2016/05/01/132025
を御覧ください。

1462076498
●拡大する


●質問者: webtomake
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● pogpi
●34ポイント

同一ユーザーの連続した処理を回避したければ、各ユーザーで一件ずつ取得すればいいですね。

MIN(No)をGROUP BY useridでSELECTして、WHEREをHAVINGにすればできそうですね。


2 ● sunn
●33ポイント

同一ID内のdoneを除くレコード内で、Noによるランクが得られたら、そのランクでソートして処理をすれば、3件ごとではなく1件ごとになるけど、そのほうがユーザ毎で均等に処理できるんじゃないか?
(MySQLでRANKを行うのがちょっと面倒だけど)


3 ● tokb
●33ポイント

少し問題を単純化して、同じユーザーについて「3つ以上を後に回す」ではなく「3つまでしかとらない」とします。問題の性格上ジョブが増えたら繰り返し実行しなければなりませんから、このようにしても意味は損なわれないと思います。

そうするとこのように書けると思います。

sqlite> select no as no2, user as user2 from tbl where (select count(no) from tbl where user = user2 and no < no2) < 3;
1|okajima
2|yoshida
3|yoshida
4|yoshida
8|okajima
10|okajima

この例はMySQLでないですけどたぶん適当に変えれば大丈夫でしょう。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ