Tengo 4 tablas
*Clientes (g_clients)
*Búsquedas de Cliente (g_client_search)
*Distritos de la búsqueda del cliente (g_client_search_distrit)
*Propiedades (g_propertys)
Para obtener las propiedades que coincidan con la búsqueda del clientes es muy fácil lo he echo de la siguiente forma:
$query_GetDistritsSearch2 = sprintf("SELECT * FROM g_client_search_distrit WHERE id_search = %s", $reg_search[$i]["id"], "int");
$GetDistritsSearch2 = mysqli_query($conexion,$query_GetDistritsSearch2) or die(mysqli_error());
$row_GetDistritsSearch2 = mysqli_fetch_assoc($GetDistritsSearch2);
$totalRows_GetDistritsSearch2 = mysqli_num_rows($GetDistritsSearch2);
if($totalRows_GetDistritsSearch2>0){$distrit=$row_GetDistritsSearch2['id_distrit'];}else{unset($distrit);}
if($reg_search[$i]['id_operation']>0){$operation=$reg_search[$i]['id_operation'];}else{unset($operation);}
if($reg_search[$i]['id_property_type']>0){$type=$reg_search[$i]['id_property_type'];}else{unset($type);}
if($reg_search[$i]['area_min']>0){$areamin=$reg_search[$i]['area_min'];}else{unset($areamin);}
if($reg_search[$i]['area_max']>0){$areamax=$reg_search[$i]['area_max'];}else{unset($areamax);}
if($reg_search[$i]['price_min']>0){$pricemin=$reg_search[$i]['price_min'];}else{unset($pricemin);}
if($reg_search[$i]['price_max']>0){$pricemax=$reg_search[$i]['price_max'];}else{unset($pricemax);}
if($reg_search[$i]['bedroom']>0){$bedroom=$reg_search[$i]['bedroom'];}else{unset($bedroom);}
if($reg_search[$i]['bathroom']>0){$bathroom=$reg_search[$i]['bathroom'];}else{unset($bathroom);}
if($reg_search[$i]['garage']>0){$garage=$reg_search[$i]['garage'];}else{unset($garage);}
unset($conditions);
$conditions = "WHERE status=1 && dateinit>'$dateend' ";
$d=0;
if($totalRows_GetDistritsSearch2>1){
$conditions .= "&& (";
do {$d++;
if($d!=$totalRows_GetDistritsSearch2){
$distrit=$row_GetDistritsSearch2["id_distrit"];
$conditions .= sprintf("(id_distrit = %s) OR ", $distrit);
}else{
$distrit=$row_GetDistritsSearch2["id_distrit"];
$conditions .= sprintf("(id_distrit = %s))", $distrit);
}
}while ($row_GetDistritsSearch2 = mysqli_fetch_assoc($GetDistritsSearch2));
}elseif($totalRows_GetDistritsSearch2>0){
$conditions .= sprintf("&& id_distrit = %s", $distrit);
}
if (isset($operation)){
$conditions .= sprintf("&& id_operation = %s", $operation);
}
if (isset($type)){
$conditions .= sprintf("&& id_property_type = %s", $type);
}
if (isset($areamin)){
$conditions .= sprintf("&& area >= %s", $areamin);
}
if (isset($areamax)){
$conditions .= sprintf("&& area <= %s", $areamax);
}
if (isset($pricemin)){
$conditions .= sprintf("&& price >= %s", $pricemin);
}
if (isset($pricemax)){
$conditions .= sprintf("&& price <= %s", $pricemax);
}
if (isset($bedroom)){
$conditions .= sprintf("&& bedroom = %s", $bedroom);
}
if (isset($bathroom)){
$conditions .= sprintf("&& bathroom = %s", $bathroom);
}
if (isset($garage)){
$conditions .= sprintf("&& garage = %s", $garage);
}
$query_GetMatch = sprintf("SELECT * FROM g_propertys ".$conditions);
$GetMatch = mysqli_query($conexion,$query_GetMatch) or die(mysqli_error());
$row_GetMatch = mysqli_fetch_assoc($GetMatch);
$totalRows_GetMatch = mysqli_num_rows($GetMatch);
Lo que he echo es simplemente listar todas las Busquedas de los Clientes y de acuerdo a las características aplicar una condicional para buscar propiedades que coincidan con los requisitos y así mismo un while para los distritos ya que una búsqueda puede considerar hasta 5 distritos como resultado obtengo lo siquiente:
Ahora el problema esta en que en la lista de las propiedades quiero hacer el cruce con las coincidencias de búsquedas, pero si parto con los datos de la propiedad en muchos casos no cumpliría dicho cruce.
Porfa necesito una mano con ello, cualquier dato que les pueda brindar estaré al tanto para responderlas.