2

緯度と経度が 2 列のテーブルがあり、2 列で正確に一致する(ちょうど) タンデム値をグループ化したいと考えています。
表の行:

/* Points Table */
time    |lat    |long
113     |2.1    |5.8
114     |2.1    |5.6    -Set as Group
115     |2.1    |5.6    -Set as Group
116     |2.1    |5.6    -Set as Group
117     |2.1    |5.6    -Set as Group
118     |2.3    |5.2
119     |2.4    |5.3
120     |2.5    |5.3    -Set as Group
121     |2.5    |5.3    -Set as Group
122     |2.6    |5.3
123     |2.1    |5.6    -Set as Group
201     |2.1    |5.6    -Set as Group
202     |2.1    |5.6    -Set as Group
203     |2.5    |5.3

結果は次のとおりです。

/* Points Table */
time    |lat    |long
113     |2.1    |5.8
114     |2.1    |5.6    -Grouped as 1 with first tandem time
118     |2.3    |5.2
119     |2.4    |5.3
120     |2.5    |5.3    -Grouped as 1 with first tandem time
122     |2.6    |5.3
123     |2.1    |5.6    -Grouped as 1 with first tandem time
203     |2.5    |5.3

タンデム値だけをグループ化したいのですが、上記では2.1 & 5.6値の 2 つの時間タンデムがあり、グループが分割されています。(テスト用はhttp://sqlfiddle.com/#!2/5d196で動作します)。;)

4

2 に答える 2

2

PHP を使用してこれを行うことができます。

$query = mysqli_query("SELECT time, lat, `long` FROM Points ORDER BY time");

// output header row
echo str_pad('time', 8) .'|';
echo str_pad('lat', 7) .'|';
echo "long\n";

$prevLat = $prevLong = '';
while ($row = mysqli_fetch_assoc($query)) {
    if ($row['lat'] === $prevLat && $row['long'] === $prevLong) {
        // if this row's lat and long values are the same as the
        // previous row's values, skip this row.
        continue;
    }

    $prevLat  = $row['lat'];
    $prevLong = $row['long'];

    echo str_pad($row['time'], 8) .'|';
    echo str_pad($row['lat'], 7) .'|';
    echo "{$row['long']}\n";
}

ここにサンプルがあります: http://codepad.org/c0SjA058

于 2012-11-06T14:24:07.780 に答える
0

これを試して:

SELECT time, lat, long FROM Points GROUP BY lat, long
于 2012-11-06T14:39:03.713 に答える