avoid unnecessary SQL when rechecking rank restrictions

This commit is contained in:
Sarah Hoffmann 2017-10-02 20:42:37 +02:00
parent 0d4c1e8460
commit e7e7ae0104

View File

@ -1739,20 +1739,19 @@ class Geocode
if ($this->aAddressRankList) { if ($this->aAddressRankList) {
$sSQL .= " OR placex.rank_address in (".join(',', $this->aAddressRankList).")"; $sSQL .= " OR placex.rank_address in (".join(',', $this->aAddressRankList).")";
} }
if (CONST_Use_US_Tiger_Data) { $sSQL .= " ) ";
$sSQL .= " ) "; if (CONST_Use_US_Tiger_Data && $this->iMaxAddressRank == 30) {
$sSQL .= "UNION "; $sSQL .= "UNION ";
$sSQL .= " SELECT place_id "; $sSQL .= " SELECT place_id ";
$sSQL .= " FROM location_property_tiger "; $sSQL .= " FROM location_property_tiger ";
$sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).") "; $sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).") ";
$sSQL .= " AND (30 between $this->iMinAddressRank and $this->iMaxAddressRank ";
if ($this->aAddressRankList) $sSQL .= " OR 30 in (".join(',', $this->aAddressRankList).")";
} }
$sSQL .= ") UNION "; if ($this->iMaxAddressRank == 30) {
$sSQL .= " SELECT place_id "; $sSQL .= "UNION ";
$sSQL .= " FROM location_property_osmline "; $sSQL .= " SELECT place_id ";
$sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).")"; $sSQL .= " FROM location_property_osmline ";
$sSQL .= " AND startnumber is not NULL AND (30 between $this->iMinAddressRank and $this->iMaxAddressRank)"; $sSQL .= " WHERE place_id in (".join(',', array_keys($aResultPlaceIDs)).")";
}
if (CONST_Debug) var_dump($sSQL); if (CONST_Debug) var_dump($sSQL);
$aFilteredPlaceIDs = chksql($this->oDB->getCol($sSQL)); $aFilteredPlaceIDs = chksql($this->oDB->getCol($sSQL));
$tempIDs = array(); $tempIDs = array();