Я объясню вам эту проблему. У меня есть две таблицы: «листинг», который содержит все мои списки с различной информацией и особенно один: идентификатор города. У меня есть второй стол «город», который содержит полный список всех городов моих стран со многими сведениями: широта, долгота, название города и т. Д.Объедините эти 2 запроса MySQL в один
Я хочу показать все данные, упорядоченные по расстоянию между фактической точкой , У меня есть lat/lng) и города в таблице листинга.
Actualy, я делаю это с 2-х запросов MySQL, и это работа:
$formula = "(6366*acos(cos(radians($latitude))*cos(radians(`latitude`))*cos(radians(`longitude`) -radians($longitude))+sin(radians($latitude))*sin(radians(`latitude`))))";
$q = "SELECT *,$formula AS dist FROM ".$this->db_city." WHERE $formula<='$distance' ORDER by dist ASC";
$q = $this->db->query($q);
$resultSQL = $q->result_array();
И это одна:
if ($localization != ''){
if ($whereClause == ''){
//$whereClause .= ' WHERE address_city LIKE "'.$localization.'"';
$loc = '';
foreach ($localization as $key => $value) {
if ($loc == ''){
$loc .= '"'.$value.'"';
}else{
$loc .= ', "'.$value.'"';
}
}
$whereClause .= ' WHERE address_city IN ('.$loc.')';
}else{
//$whereClause .= ' && address_city LIKE "'.$localization.'"';
$loc = '';
foreach ($localization as $key => $value) {
if ($loc == ''){
$loc .= '"'.$value.'"';
}else{
$loc .= ', "'.$value.'"';
}
}
$whereClause .= ' && address_city IN ('.$loc.')';
}
}
$q = "SELECT * FROM ".$this->db_listing.$whereClause." ORDER BY created_stamp DESC";
Это работа, но проблема не имеют " dist ", доступный в этом втором запросе, поэтому я не могу упорядочить по dist. Решение для этого - объединить первый большой запрос (тот, который имеет формулу) со вторым.
Я попробовал LEFT JOIN, но это не сработало. Не могли бы вы мне помочь ? Благодаря !
Хммм спасибо, но он просто делает то же самое, что и первый запрос. Он работает, но я хочу иметь это значение «dist», доступное во втором запросе. Тот, кто получает мой листинг. – jackson
@jackson: кажется, вы забыли поместить имя таблицы в свой второй запрос, $ this-> db_listing. $ WhereClause начал с того, где предложение опускает имя таблицы, можете ли вы разместить имя таблицы? поделиться с вами структурой данных Я поправлю вас. –
Таблица "Список" ID, LISTING_NAME, город Table "город" ID, широчайшие, LNG, city_name Так во всем мире, я хотел бы сделать: SELECT * FROM листинг ORDER BY дист Но, в "Dist" поле генерируется первым запросом, а не вторым. – jackson