У меня есть следующий запрос, который возвращает следующую таблицу:SQL с присоединиться два и заказ пределом
(select trace_3733_3742.Sequance,trace_3733_3742.MainSequenceNum,trace_3733_3742.hopAddress addr from `trace_3733_3742` where MainSequenceNum = 5668799415 or MainSequenceNum = 5671689631);
+----------+-----------------+------------+
| Sequance | MainSequenceNum | addr |
+----------+-----------------+------------+
| 1 | 5668799415 | 2229485073 |
| 3 | 5668799415 | 2229496574 |
| 4 | 5668799415 | 2258501244 |
| 5 | 5668799415 | 3286073269 |
| 6 | 5668799415 | 3241391462 |
| 7 | 5668799415 | 3241390941 |
| 8 | 5668799415 | 3241393449 |
| 9 | 5668799415 | 3241393534 |
| 10 | 5668799415 | 3561607085 |
| 11 | 5668799415 | 71666625 |
... ...
и у меня есть другая таблица, используя
(SELECT latitude,longitude FROM `GeoLiteCity_Oct2011` WHERE (start_ip_num <= hopaddress) ORDER BY start_ip_num DESC LIMIT 1);
hopaddress = один из hopaddress из таблицы вверх
, например, :
(SELECT latitude,longitude FROM `GeoLiteCity_Oct2011` WHERE (start_ip_num <= 3561607199) ORDER BY start_ip_num DESC LIMIT 1);
возвращает результат я хочу
таблица выглядит следующим образом:
+--------------+------------+----------+-----------+
| start_ip_num | end_ip_num | latitude | longitude |
+--------------+------------+----------+-----------+
| 0 | 0 | NULL | NULL |
| 16777216 | 16777471 | -27 | 133 |
| 16777472 | 16778239 | 35 | 105 |
| 16778240 | 16779263 | -27 | 133 |
| 16779264 | 16781311 | 35 | 105 |
| 16781312 | 16785407 | 36 | 138 |
... ...
то, что я хочу сделать, это возвращать запрос для первой таблицы с широтой, долготой для каждой строки - но я не могу это сделать
я попытался следующие:
select * from (select trace_3733_3742.Sequance,trace_3733_3742.MainSequenceNum,trace_3733_3742.hopAddress addr from `trace_3733_3742` where MainSequenceNum = 5668799415 or MainSequenceNum = 5671689631) trace
join GeoLiteCity_Oct2011 loc
where (loc.start_ip_num <= addr) ORDER BY loc.start_ip_num DESC LIMIT 1
но это будет возвращать только 1 результат, а не всю таблицу :(
его, похоже, работает, только если я попытаюсь получить широту или долготу, если я попытаюсь получить их обоих, как вы написали «SELECT g.latitude, g.longitude». I get Код ошибки: 1241 Операнд должен содержать 1 столбец (s), как я могу справиться с этим? Благодаря!! – Tomer
, когда я использую «CONCAT (g.latitude,«, », g.longitude)« он работает, как я могу обойти эту ОШИБКУ? – Tomer
ВЫБОР m.Sequance, m.MainSequenceNum, m.hopAddress, (SELECT g.latitude ОТ 'GeoLiteCity_Oct2011' КАК г ГДЕ g.start_ip_num <= m.hopAddress ORDER BY g.start_ip_num DESC LIMIT 1), (SELECT j.longitude ОТ 'GeoLiteCity_Oct2011' КАК J ГДЕ j.start_ip_num <= m.hopAddress ORDER BY j.start_ip_num DESC LIMIT 1) FROM' trace_3733_3742' AS м ГДЕ m.MainSequenceNum = 5668799415 или m.MainSequenceNum = 5671689631; , который должен сделать это ... но, вероятно, не лучший способ сделать это. – Romain