Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta a mysql grande

Estas en el tema de Consulta a mysql grande en el foro de Mysql en Foros del Web. Hola estoy haciendo una consulta a mysql a una tabla de 250 campos y en el buscar de la administracion debo de hacer una consulta ...
  #1 (permalink)  
Antiguo 18/07/2006, 09:07
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
Exclamación Consulta a mysql grande

Hola
estoy haciendo una consulta a mysql a una tabla de 250 campos y en el buscar
de la administracion debo de hacer una consulta a mysql pero claro alguno de estos campos pueden estar vacios y asi como os la pongo me da error, y no me busca. aver si me podeis echar un cable.

Consulta
Código PHP:
$_pagi_sql "SELECT * FROM usuarios WHERE nom LIKE '%$nom%' AND cognoms LIKE '%$cognoms%' AND data_neix between '$data1' and '$data2' AND provin LIKE '%$provin%' AND pobla LIKE '%$pobla%' AND freg1_tit LIKE '%$freg1_tit%' AND ep1_sec LIKE '%$ep1_sec%' AND ep1_tre LIKE '%$ep1_tre%'"
Una ayudita ;)

Gracias , n3m0
  #2 (permalink)  
Antiguo 18/07/2006, 09:36
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Cual es el error?
  #3 (permalink)  
Antiguo 18/07/2006, 09:41
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
Que no me encuentra resultados, cuando los hay.

Por ejemplo si hay un usuario con nombre Victor y yo pongo Nombre Victor ... No se encontraron resultados en cambio si en el query solo pongo la parte de nom LIKE '%$nom%' sale correctamente y no lo entiendo :S

Un saludo
  #4 (permalink)  
Antiguo 18/07/2006, 10:42
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 9 meses
Puntos: 0
La tabla tiene campos nulos, esto es tiene campos con valor NULL? Igual te viene el problema por ahi, que si es nulo al compararlo te da false y no te devuelve nada.

Porque no pones solo los filtros de los campos que tengan valor en la SQL, tal que

if (!empty($nom)) $SQL.=" AND nom LIKE '%$nom%' "
  #5 (permalink)  
Antiguo 18/07/2006, 10:58
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
Ostia!

no habia caido en eso y mira que estoy usando los !empty en el code php, mañana lo arreglo muchas gracias ;)


Saludos,

N3m0
  #6 (permalink)  
Antiguo 18/07/2006, 12:15
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
Tambien puedes usar OR en lugar de AND, para obtener mas resultados, dado que algunos campos están vacíos.
  #7 (permalink)  
Antiguo 19/07/2006, 03:51
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
seanchan llevo un rato provando tu idea y es buena pero hay un problema, a ver en mi formulario de busqueda no hay ningun campo que siempre este lleno por lo tanto al poner un campo se añadiria el AND ( mas las propiedades de la consulta)

Y quedaria la consulta asi.... WHERE AND (...) y daria problema alguna idea para solucionar esto?
  #8 (permalink)  
Antiguo 19/07/2006, 04:02
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 17 años, 9 meses
Puntos: 0
Lo que quieres evitar es el WHERE AND que da error, si he entendido bien. SE podria hacer con una variable filtro y ir comprobando si es vacia, si es vacia no añades el AND, si hay algo le añades el AND al filtro, aunque la solución que suelo utilizar para no recargar tanto el codigo es:


Código PHP:
   $SQL "SELECT * FROM usuarios WHERE (1=1)";
   if (!empty(
$nom)) $SQL.=" AND nom LIKE '%$nom%'";
   if (!empty(
$nom)) $SQL.=" AND cognoms LIKE '%$cognoms%'";
..... 
Adeu

Última edición por seanchan; 19/07/2006 a las 04:35
  #9 (permalink)  
Antiguo 19/07/2006, 04:22
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 17 años, 9 meses
Puntos: 0
una igualdad lo soluciona todo jaja gracias gracias ;) te debo una copa ^^

Por si alguien llega aqui con un problema parecido pon los { } del if ;) en tu respuesta.


n3m0
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:23.