Hola, hace tiempo no escribía. Tengo una duda ¿se pueden colocar if dentro de una consulta mysql? y si se puede ¿como es la sintaxis?
Explico un poco mejor, tengo un formulario de búsqueda con varios parámetros de búsqueda donde lo apunto a una página que lo que hace es guardar la consulta en la base de datos. Luego lo redirecciona a la misma página (no es importante si es la misma o no) con un header: Location ...
En la página destino hago el query para sacar la búsqueda y hacer el query definitivo que me traiga los resultados pero me encuentro que cuando los parámetros son inexistentes en la base de datos no trae resultados ... pego el código a ver si se entiende mejor, soy muy malo escribiendo.
// Página q recibe el POST //
mysql_query("insert into empresas_busqueda_cv set empresa_busqueda_cv_contacto='$_POST['cont']', empresa_busqueda_cv_tipo_puesto='$_POST['tipo_puesto']', empresa_busqueda_cv_area='$_POST['area']', empresa_busqueda_cv_industria='$_POST['industria']', empresa_busqueda_cv_tipo_est='$_POST['tipo_estudio']', empresa_busqueda_cv_provincia='$_POST['provincia']', empresa_busqueda_cv_sexo='$_POST['sexo']', empresa_busqueda_cv_time=NOW()");
$ultimo = mysql_insert_id();
header("Location: ../emp.cuenta.php?archivo=busqueda&busqueda=$ultimo") ;
exit;
// QUERY DE BÚSQUEDA //
$bu = mysql_query("select * from empresas_busqueda_cv where empresa_busqueda_cv_id='$busqueda'");
$bus = mysql_fetch_array($bu);
$cad = mysql_query("select concat(users.user_apellido,', ',users.user_nombre)as nombre, DATE_FORMAT(users.user_cumpleanos, '%d-%m-%Y')as fecha_nac, users.user_id, users.user_sexo, sexos.sexo_id, sexos.sexo_nombre, users_preferencias.user_preferencia_id, users_preferencias.user_preferencia_objetivo, preferencias_areas.preferencia_area_area, preferencias_industria.preferencia_industria_indus tria, provincias.provincia_nombre, paises.pais_nombre from users, sexos, users_preferencias, preferencias_areas, preferencias_industria, provincias, paises where users.user_activo='1' and sexos.sexo_id=users.user_sexo and users_preferencias.user_preferencia_user=users.use r_id and provincias.provincia_id=users.user_provincia and paises.pais_id=users.user_pais and preferencias_areas.preferencia_area_user=users.use r_id and preferencias_areas.preferencia_area_area='$bus[empresa_busqueda_cv_area]' and preferencias_industria.preferencia_industria_indus tria='$bus[empresa_busqueda_cv_industria]' and preferencias_industria.preferencia_industria_user= users.user_id order by users.user_apellido, users.user_nombre LIMIT $inicial, $cantidad");
// acá tengo el tema ya que en las tablas preferencias_industria y preferencias_areas (son los filtros de búsqueda) no existe el valor 0, o sea que si cuando busco no elijo por ejemplo área el valor de $area es 0 entonces no me encuentra nada. O sea que quiero hacer un solo query que busque aunque uno de los parámetros de filtro tenga valor 0
Espero se entienda, yo ya estoy quemado y seguramente no estoy viendo el bosque atrás del árbol.
Lo que había pensado pero no me funciona es:
$bu = mysql_query("select * from empresas_busqueda_cv where empresa_busqueda_cv_id='$busqueda'");
$bus = mysql_fetch_array($bu);
$cad = mysql_query("select concat(users.user_apellido,', ',users.user_nombre)as nombre, DATE_FORMAT(users.user_cumpleanos, '%d-%m-%Y')as fecha_nac, users.user_id, users.user_sexo, sexos.sexo_id, sexos.sexo_nombre, users_preferencias.user_preferencia_id, users_preferencias.user_preferencia_objetivo, preferencias_areas.preferencia_area_area, preferencias_industria.preferencia_industria_indus tria, provincias.provincia_nombre, paises.pais_nombre from users, sexos, users_preferencias, preferencias_areas, preferencias_industria, provincias, paises where users.user_activo='1' and sexos.sexo_id=users.user_sexo and users_preferencias.user_preferencia_user=users.use r_id and provincias.provincia_id=users.user_provincia and paises.pais_id=users.user_pais"
if ($bus[empresa_busqueda_cv_area] != "0") {
." and preferencias_areas.preferencia_area_user=users.use r_id and preferencias_areas.preferencia_area_area='$bus[empresa_busqueda_cv_area]'"
}
if ($bus[empresa_busqueda_cv_industria] != "0") {
." and preferencias_industria.preferencia_industria_indus tria='$bus[empresa_busqueda_cv_industria]' and preferencias_industria.preferencia_industria_user= users.user_id"
}
." order by users.user_apellido, users.user_nombre LIMIT $inicial, $cantidad");
De esta manera tomaría las variables que si tienen valor como filtro y me resolvería el problema ... creo.
Espero sugerencias por favor.
Saludos