MySQL-запрос для определения IP-адреса с помощью Geolite2
Я импортировал данные Geolite2 из CSV в MySQL ( бесплатные загружаемые базы данных GeoLite2)
У меня сейчас 3 стола
- GeoLite2-Сити-блоки-IPv4
- GeoLite2-Сити-блоки-IPv6
- GeoLite2-City-Locations-fr (я использую его для французских IP-адресов)
Я не могу понять, какой запрос SQL мне нужно написать, чтобы получить местоположение с определенного IP-адреса.
-- РЕДАКТИРОВАТЬ:
Нашел ответ: Идея состоит в том, чтобы создать два дополнительных поля в таблице блоков:
ip_from = INET_ATON(SUBSTRING(@network, 1, LOCATE('/', @network) - 1))
ip_to = (INET_ATON(SUBSTRING(@network, 1, LOCATE('/', @network) - 1)) + (pow(2, (32-CONVERT(SUBSTRING(@network, LOCATE('/', @network) + 1), UNSIGNED INTEGER)))-1))
Тогда местоположение можно найти с помощью:
SELECT * FROM `geoip_locations` WHERE geoname_id =
(SELECT geoname_id FROM geoip_blocks WHERE ip_to >= INET_ATON(TRIM('ip_adress_here')) AND ip_from <= INET_ATON(TRIM('ip_adress_here')));