Применение информации из одной таблицы в отдельную таблицу в той же базе данных?

У меня ТАБЛИЦА 1, которая содержит почтовые индексы и их информацию о местоположении (то есть долготу, широту и т. Д.), ТАБЛИЦА 2 содержит свойства с их адресами … Мне нужно подключить долготу и широту zipcodes в ТАБЛИЦЕ 1 к адресам в ТАБЛИЦЕ 2 >>

чтобы создать поиск, который дает ближайшие свойства в радиусе (x) мили определенного почтового индекса …

Я не уверен, как это сделать. Нужно ли комбинировать две таблицы? Или я могу выполнить поиск, который извлекает информацию из обоих одновременно?

Благодаря!

Прежде всего, вам нужно создать связь между этими двумя таблицами, вы можете использовать Zipcode или использовать суррогатный ключ. Затем вы можете присоединиться к двум таблицам, чтобы выполнить поиск.

вы должны сделать выбор в таблице zip-кодов для того, какие почтовые индексы соответствуют вашим координатам, а затем присоединиться к таблице адресов, где адрес имеет этот почтовый индекс.

http://dev.mysql.com/doc/refman/5.0/en/join.html

Если я правильно понимаю вашу проблему, проблема заключается в том, что сервер не сможет сказать, насколько близко или далеко друг от друга, а два из них имеют один и тот же почтовый индекс.
Позвольте мне перефразировать. Если у вас есть адреса A, B и C, и все они имеют один и тот же почтовый индекс, нет способа (кроме случаев, когда у вас есть координаты в таблице адресов), чтобы узнать, насколько близко A от B или C.

Возможная работа вокруг, как вам сказали, это использовать только zipcode для связи таблиц. Тогда вам просто нужен простой запрос соединения:

SELECT <fields> FROM TABLE1 a join TABLE2 b on ( a.zipcode=b.zipcode ) WHERE a.zipcode=<Your_search_here> 

В этом примере ваш zip-код даже не должен находиться в выбранных вами полях.

Надеюсь, это поможет =)

Это взято с сайта, который я сделал, что клиент пропустил город и не заплатил за меня – наслаждайтесь:

 <?php $res = mysqli_query($dh, "SELECT `items`.`id`, `items`.`title`, `items`.`postcode`, `geodata`.`lat`, `geodata`.`long`, (6371.009*acos(cos(radians(" . $_SESSION['lat'] . "))* cos(radians(`geodata`.`lat`))*cos(radians(`geodata`.`long`)-radians(" . $_SESSION['long'] . "))+sin(radians(" . $_SESSION['lat'] . "))* sin(radians(`geodata`.`lat`)))) AS `distance` FROM `items`, `geodata` WHERE `geodata`.`postcode` = `items`.`postcode` ORDER BY `distance` ASC" ); echo '<table>'; while($item = mysqli_fetch_assoc($res)) { echo '<tr>' . '<td><a href="/' . $item['id'] . '">' . $item['title'] . '</a></td>' . '<td>' . $item['postcode'] . ' (' . number_format($item['distance']) . 'km away)</td>' . '</tr>'; } echo '</table>'; ?> 

В этом примере $_SESSION['lat'] и $_SESSION['long'] содержат местоположение пользователя.

Также нужна таблица MySQL, такая как geocode :

 postcode | lat | long 200 | -35.2765521 | 149.1220236 810 | -12.3808934 | 130.8773842 

(они были взяты из Австралии).

Это возвращает список items , ближайших сперва, с расстоянием, указанным в км.