あなたは時間と座標がに適用されているようですが、すべてあなたのeav属性のに適用されます。
この場合、完璧な解決策は、time
とcoordinates
(またはxとyを別々に)をeavテーブルに追加することです。
潜在的に無制限の数の属性がある場合、eavを持つすべての理由があります。しかし、superの属性が他のすべての属性に適用される場合、そのeavテーブルを展開しない理由はありません。
結果はあなたが特定のエンティティに関連して、グラフまたは任意にプロットでき座標のセットになります
SELECT `coordinates` FROM `my_table` WHERE `entity_id` = 25 ORDER BY `time` ASC
:
id | entity_id | attribute | value | time | coordinates
1 | 25 | tag | funny | 12/12/12 | 200,300
1 | 25 | tag | funny | 12/13/12 | 0,1
あなたは、このようなクエリを行うことができます。
それとも、行うことができます:あなたにこの
ENTITY_IDのような結果を与えるだろう
SELECT `entity_id`, GROUP_CONCAT(CONCAT(`time`,'|',`coordinates`) ORDER BY `time` ASC SEPARATOR '~') as `time_coords` FROM `my_table` WHERE `entity_id` BETWEEN 25 AND 50 ORDER BY `entity_id`
| time_coords 25 | 12/12/12 | 200,300〜12/13/12 | 0,1 26 | 12/12/12 | 150,99〜12/29/12 | 151,180〜12/30/12 | 60,60
PHPを使用して、結果をentity_idで解析できます。
など。 (クエリ結果を取得した後)
while($row = mysql_fetch_row($result)) {
$id = $row[0];
$time_coords = explode('~',$row[1]);
foreach($time_coords as $time_coord) {
$temp = explode('|',$time_coord);
$time = $time_coord[0];
$coord = $time_coord[1];
// do stuff with $id, and each $time+$coord for that id
}
}