я работаю над проектом, и я застрял на запросе:SQL Как выбрать максимальное значение при сравнении 2 SQL таблиц
Я хочу, чтобы создать своего рода GPS на базе Wi-Fi. Есть 2 таблицы (пользователи и местоположения), и мне нужно поместить результаты в третью таблицу.
Первый стол, где отправляется информация с телефонов пользователей.
MAC-адрес и MAC-адрес беспроводного доступа MAC с уровнем сигнала. Телефоны пользователей могут видеть несколько точек беспроводного доступа.
Вторая таблица, где хранятся все известные беспроводные точки доступа с их координатами (широта и долгота).
Вот таблицы:
Users
:
| PhoneMac | apMac | signal |
| user1 |11:11:11 | 20 |
| user1 |22:22:22 | 80 |
| user1 |33:33:33 | 50 |
| user1 |55:55:55 | 99 |
| user2 |11:11:11 | 60 |
| user3 |44:44:44 | 10 |
| user3 |11:11:11 | 90 |
Locations
стол:
| apMac | Lat | Lon |
| 11:11:11 |10.000 |30.000 |
| 33:33:33 |30.000 |30.000 |
| 44:44:44 |40.000 |40.000 |
Мне нужен запрос, который принимает apMac из Users
таблицы, проверить, являются ли они в Locations
таблице и от найденных выберите тот, у которого самый сильный сигнал.
Таким образом, результаты должны быть PhoneMac и координаты выбранной точки доступа. Это нужно делать с каждым пользователем.
Используя таблицы выше, это должно быть правильный результат:
| PhoneMac | Lat | Lon |
| user1 |30.000 |30.000 |
| user2 |10.000 |10.000 |
| user3 |10.000 |10.000 |
sql = "SELECT t1.PhoneMac, t1.apMac, t1.signal, t2.apMac, t2.lat, t2.lon,
COUNT(t1.MacTel) AS num
FROM users t1
INNER JOIN locations t2
ON t1.apMac=t2.apMac
GROUP BY t1.PhoneMac
ORDER BY num DESC";
Это код, который я до сих пор. Я не могу понять, как включить часть о выборе apMac
с самым сильным сигналом, потому что теперь он возвращает только первый apMac
из списка.
Для какой системы баз данных? * SQL * - это только язык запросов, а не продукт базы данных ... –