Группировать точные значения тандема из 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
значения и группа разбиты. (для тестирования можно работать на http://sqlfiddle.com/).;)
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
Попробуй это:
SELECT time, lat, long FROM Points GROUP BY lat, long