Поиск в базе данных строк с двумя запросами mysql / php

#php #mysql

#php #mysql

Вопрос:

У меня есть база данных с journeys, я пытаюсь найти все результаты в таблице, которые передают оба запроса (например, INTERSECT), но я могу получить только два набора результатов. Запросы выполняют поиск по всем записям в радиусе с обоих концов sql — это начало пути, а sql2 — конец пути

 <?php

include_once 'dbconnect.php';


     // Get lat and long by address 
     $dlocation = 'SW1A 0AA';        
        $address = $dlocation; // Google HQ
        $prepAddr = str_replace(' ',' ',$address);
        $geocode=file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'amp;sensor=false');
        $output= json_decode($geocode);
        $lat = $output->results[0]->geometry->location->lat;
        $lng = $output->results[0]->geometry->location->lng;
        
        // Get lat and long by address 
     $dlocation = 'bb97bp';        
        $address = $dlocation; // Google HQ
        $prepAddr = str_replace(' ',' ',$address);
        $geocode=file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$prepAddr.'amp;sensor=false');
        $output= json_decode($geocode);
        $lat2 = $output->results[0]->geometry->location->lat;
        $lng2 = $output->results[0]->geometry->location->lng;

$sql = "SELECT adpastrip_id, ( 3959 * acos( cos( radians($lat) ) * cos( radians( lat1 ) ) * cos( radians( long1 ) - radians($lng) )   sin( radians($lat) ) * sin( radians( lat1 ) ) ) ) AS distance FROM addgoodstrip HAVING distance < 10 ORDER BY distance LIMIT 0 , 20";
$result = $con->query($sql);                           
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
	    $id = $row['adpastrip_id'];   
    }
}
$sql2 = "SELECT adpastrip_id, ( 3959 * acos( cos( radians($lat2) ) * cos( radians( lat2 ) ) * cos( radians( long2 ) - radians($lng2) )   sin( radians($lat2) ) * sin( radians( lat2 ) ) ) ) AS distance FROM addgoodstrip HAVING distance < 10  ORDER BY distance LIMIT 0 , 20 ";
$result2 = $con->query($sql2);                           
if ($result2->num_rows > 0) {
    // output data of each row
    while($row2 = $result2->fetch_assoc()) {
	    $id2 = $row2['adpastrip_id'];
    }
}
?>  

Комментарии:

1. Является ли построение результатов, пока циклы являются фактическим кодом? Я знаю, что это напрямую не связано с вопросом, но это сбивает с толку, потому что с этими циклами ответ не был бы полезен. Если вы знаете, что вы там делаете, то лучше написать какой-нибудь общий комментарий, чем ошибочный фиктивный код (вы не создаете там результирующий набор — просто сохраняете последнее итерированное значение, и вы не используете значения расстояния, поступающие из запроса). Кроме того, почему бы вам просто не использовать один запрос? Это простая логика.