Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/11/2005, 18:11
Avatar de jpvilar
jpvilar
 
Fecha de Ingreso: febrero-2005
Ubicación: Buenos Aires - Argentina
Mensajes: 128
Antigüedad: 19 años, 2 meses
Puntos: 1
Pregunta If dentro de un query

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
__________________
JuanP
QUIEN NO SE EQUIVOCA NO APRENDE ...
QUIEN NO APRENDE SE EQUIVOCA ... PERO NO APRENDE