下と ような DB テーブルが ある. id_person科 id_classを 連結する relation テーブルだ. 半分が 変わる のを 記録して 累積する.

見れば 卵 数 あるが, 1番(回) id_person銀 2半分であって 4半分であって 1半分が いい.

2番(回) id_person銀 3半分であって 1半分が いい.

id id_person id_class date_written
53 1 1 2012-04-05 16:40
50 1 4 2012-04-05 16:02
1 1 2 2012-03-30 17:56
2 2 3 2012-03-30 17:56
51 2 1 2012-04-05 16:36
3 3 4 2012-03-30 17:56
52 3 1 2012-04-04 16:37
4 4 5 2012-03-30 17:56
5 5 6 2012-03-30 17:56
6 6 7 2012-03-30 17:56
7 7 1 2012-03-30 17:56
8 8 2 2012-03-30 17:56
9 9 3 2012-03-30 17:56

定木, ところが 今 抜こうとする データは 各 id_person これ 何 半分か する ことだ.

サーブクイーリーで すれば なるが…

これ テーブルのみを 土台で それを 抜く 数 あるか? あった. 下のように クイーリーを 使う ことだ.

SELECT p.*
FROM `person_class_relation_table` AS p
WHERE date_written=(SELECT MAX(date_written) FROM person_class_relation_table WHERE id_person = p.id_person)

こんなに サーブクイーリーを 使えば 求める 数 ある. ところが リストが 多くなれば 深刻な 性能 低下 現象が 起る ことだ.

質問 – サーブクイーリーを 使うの なくて 求める 数 ある 方法は?

サーブクイーリーを 使うの なくて 求める 数 ある 方法は 何が あるか?

私が 試みた 方法は 下の クイーリーだ.

SELECT *, MAX(date_written)
FROM person_class_relation_table
GROUP BY id_person

こんなに するから 親切に id_personで グループが 建てられて 出たし, date_written 項目は 違う データたちと 何らの 構わずに そのまま 最高値だけ 出た. すなわち, id_person 1番(回)は 1半分だと するのに 2半分だと 出た. ところが date_written銀 最新値. OTL;; やっぱりGROUP BY増えた id_personを 基準で グループだけ 作って 与える やつだった のだ…

次では こんなに 日 見たが 作動するの なかった.

SELECT *
FROM person_class_relation_table
GROUP BY id_person
WHERE date_written = MAX(date_written)

4番(回) 竝びが 間違い 表示された. あのように くぎ 使うという エラーが 出た ことだ そのまま.

ヨトンガンに, そのため 故水気たち頃 質問させていただく. 私が MySQLに 本当 脆弱だという のを 今更 感じながら 質問する.

**これ 場合 代替 どうに すると しようか?! **(ような 内容を PHP Schoolに 質問した.)

PHPSchoolで 草の葉っぱ 様が 日 準 返事

サーブクイーリー なく 求める 方法は ない の ようです.
いっそ 状態フィールドを 一つ もっと 入力して
insert時 新しい データは 状態 フィールド = 1 路 入力して,
同一 id_personこれ 存在すれば 過去 データの 状態フィールド = 0で update させる のが 望ましくて 見えます.
それでは 敢えて group byを 夏至 ないとしても where 状態フィールド = 1 だけでも 願う 效果を 得る 数 あろう 見ます.

勿論 select街 もっと 頻繁に 起きて update?増えた 自主 起きるの ないという 条件の下で 話です.

こんなに する 蟹 ましな の ようだ.

下は table 生成 クイーリーだ. 参考すれば なる.

--
-- テーブル 構造 `person_class_relation_table`
--

CREATE TABLE IF NOT EXISTS `person_class_relation_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `id_person` int(11) NOT NULL COMMENT 'id_person',
  `id_class` int(11) NOT NULL COMMENT 'id_class',
  `date_written` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入力日時',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=54 ;

--
-- テーブルの ダンプ データ `person_class_relation_table`
--

INSERT INTO `person_class_relation_table` (`id`, `id_person`, `id_class`, `date_written`) VALUES
(1, 1, 2, '2012-03-30 17:56:58'),
(2, 2, 3, '2012-03-30 17:56:58'),
(3, 3, 4, '2012-03-30 17:56:58'),
(4, 4, 5, '2012-03-30 17:56:58'),
(5, 5, 6, '2012-03-30 17:56:58'),
(6, 6, 7, '2012-03-30 17:56:58'),
(7, 7, 1, '2012-03-30 17:56:58'),
(8, 8, 2, '2012-03-30 17:56:58'),
(9, 9, 3, '2012-03-30 17:56:58'),
(10, 10, 4, '2012-03-30 17:56:58'),
(11, 11, 5, '2012-03-30 17:56:58'),
(12, 12, 6, '2012-03-30 17:56:58'),
(13, 13, 7, '2012-03-30 17:56:58'),
(14, 14, 1, '2012-03-30 17:56:58'),
(15, 15, 2, '2012-03-30 17:56:58'),
(16, 16, 3, '2012-03-30 17:56:58'),
(17, 17, 4, '2012-03-30 17:56:58'),
(18, 18, 5, '2012-03-30 17:56:58'),
(19, 19, 6, '2012-03-30 17:56:58'),
(20, 20, 7, '2012-03-30 17:56:58'),
(21, 21, 1, '2012-03-30 17:56:58'),
(22, 22, 2, '2012-03-30 17:56:58'),
(23, 23, 3, '2012-03-30 17:56:58'),
(24, 24, 4, '2012-03-30 17:56:58'),
(25, 25, 5, '2012-03-30 17:56:58'),
(26, 26, 6, '2012-03-30 17:56:58'),
(27, 27, 7, '2012-03-30 17:56:58'),
(28, 28, 1, '2012-03-30 17:56:58'),
(29, 29, 2, '2012-03-30 17:56:58'),
(30, 30, 3, '2012-03-30 17:56:58'),
(31, 31, 4, '2012-03-30 17:56:58'),
(32, 32, 5, '2012-03-30 17:56:58'),
(33, 33, 6, '2012-03-30 17:56:58'),
(34, 34, 7, '2012-03-30 17:56:58'),
(35, 35, 1, '2012-03-30 17:56:58'),
(36, 36, 2, '2012-03-30 17:56:58'),
(37, 37, 3, '2012-03-30 17:56:58'),
(38, 38, 4, '2012-03-30 17:56:58'),
(39, 39, 5, '2012-03-30 17:56:58'),
(40, 40, 6, '2012-03-30 17:56:58'),
(41, 41, 7, '2012-03-30 17:56:58'),
(42, 42, 1, '2012-03-30 17:56:58'),
(43, 43, 2, '2012-03-30 17:56:58'),
(44, 44, 3, '2012-03-30 17:56:58'),
(45, 45, 4, '2012-03-30 17:56:58'),
(46, 46, 5, '2012-03-30 17:56:58'),
(47, 47, 6, '2012-03-30 17:56:58'),
(48, 48, 7, '2012-03-30 17:56:58'),
(49, 49, 1, '2012-03-30 17:56:58'),
(50, 1, 4, '2012-04-05 16:02:07'),
(51, 2, 1, '2012-04-05 16:36:49'),
(52, 3, 1, '2012-04-04 16:37:09'),
(53, 1, 1, '2012-04-05 16:40:25');

 

- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。