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

problema en cosnulta

Estas en el tema de problema en cosnulta en el foro de Mysql en Foros del Web. saludos soy nuevo y tengo un problema con una consulta tengo una tabla llamada clientes y necesito buscar los clientes por el nombre pero no ...
  #1 (permalink)  
Antiguo 31/05/2009, 00:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Sonrisa problema en cosnulta

saludos

soy nuevo y tengo un problema con una consulta

tengo una tabla llamada clientes y necesito buscar los clientes por el nombre pero no se como hacerlo.

en la base de datos lo hago con

select *from clientes where nom_cli = 'gonzalo';

y me funciona, pero si se llama 'gonzalo alfonso' o 'javier gonzalo' como podria solucionar mi consulta para que muestre todos los que tienen la palabra gonzalo?

se puede hacer esto?
  #2 (permalink)  
Antiguo 31/05/2009, 05:15
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: problema en cosnulta

Código sql:
Ver original
  1. SELECT * FROM clientes WHERE nom_cli LIKE '%gonzalo%';
  #3 (permalink)  
Antiguo 31/05/2009, 05:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta

gracias gracias!!!

nunca pensé que fuera tan facíl.

gracias jurena.
  #4 (permalink)  
Antiguo 31/05/2009, 06:31
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta

hola jurena, te agradezco mucho la ayuda.

tu consulta me ha funsionado muy bien, pero en el sistema podria tener algunos apellidos como sanchez o castrillon que algunos clientes podrian registrarlos con tilde o sin tilde.

hay alguna forma de hacer la misma consulta con like '%castrillon%' or like '%castrillón%'; para que me muestre ambos?

muchas gracias.
  #5 (permalink)  
Antiguo 31/05/2009, 09:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: problema en cosnulta

Dos opciones. La mejor, si todas las búsquedas quieres hacerlas sin distinguir acentuadas es cambiar la collation o cotejamiento del campo donde busques a uno que sea ci. Por ejemplo, si tu codificación es latin1 a latin1_spanish_ci; y si es utf8 a utf8_spanish_ci. Con eso bastará.
La otra es hacer lo que dices, pero tendrás que hacerlo cuatro veces (dos para con acento y sin acento, y dos para mayúscula con acento y sin acento) y no merece la pena si puedes solucionarlo con la collation.
Prueba y dinos.
  #6 (permalink)  
Antiguo 31/05/2009, 11:54
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta

hola jurena
gracias nuevamente

desde phpmyadmin cambié el cotejamiento de la base de datos a latin1_spanish_ci.

pero me sigue sin funcionar.

las tildes me las muestra con simbolos extraños. la í es ! la ó es un simbolo raro.

gracias por la ayuda
  #7 (permalink)  
Antiguo 31/05/2009, 12:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: problema en cosnulta

Pero primero debes comprobar qué codificación tiene la base y cuál tiene la tabla donde está ese campo, además del campo, porque si no es latin1 en los tres casos debes ver qué pasa. Lo primero es ver cuál es la codificación de la base, la tabla y el campo. Luego cambiaremos el cotejamiento o collation del campo según sea la codificación o charset.
  #8 (permalink)  
Antiguo 31/05/2009, 13:22
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta

cuando inicio phpmyadmin, en la parte derecha dice: "juego de caracteres de MySQL: UTF-8 Unicode (utf8)"
cuando selecciono mi base de datos, todas las tablas tienen latin1_swedish_ci en cotejamiento.
En operaciones cambie de latin1_swedish_ci a latin1_spanish_ci, pero parece que no cambio.

como debo hacer estos cambios?

Es posible evitar ingresar acentos en una tabla? tambien me sirve evitar que el usuario ingrese tildes ya que si me funciona sin tildes.

gracias nuevamente
  #9 (permalink)  
Antiguo 31/05/2009, 13:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: problema en cosnulta

Cambia el juego de caracteres de PHPMyAdmin a latin1 a ver qué pasa.
Si todo se ve bien, cambia la collation de las tablas o al menos la del campo sobre el que quieres buscar a latin1_spanish_ci.
Y luego prueba.
  #10 (permalink)  
Antiguo 31/05/2009, 15:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta

Jurena
no logro cambiar el juego de caracteres a latin1.en phpmyadmin no encuentro ninguna opcion

encontre que poniendo alter database hoteles charset=latin1; se podia pero me sigue apareciendo
utf8 en la pagina principal de phpmyadmin.

el cotejamiento de las tablas ya lo pude cambiar a spanish_ci

pero sigo con el mismo problema.

:

tratare desde php, impedir el ingreso de tildes con codigo ascii.
es una idea que me han dado.

jurena te agradezco mucho tu ayuda.
  #11 (permalink)  
Antiguo 31/05/2009, 20:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema en cosnulta

yokosuma...
mira este link...
http://www.forosdelweb.com/f86/funci...-mysql-704190/
te puede servir.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #12 (permalink)  
Antiguo 01/06/2009, 00:41
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: problema en cosnulta

A ver, cuando estés en PHPMyAdmin, al seleccionar la base, pulsa sobre operaciones, y abajo del todo podrás cambiar la collation, lo que conlleva el cambio de charset. Si cambias a latin1_spanish_ci, debería funcionar, aunque en realidad no sé si tu phpmyadmin en el servidor te lo permitirá ahí, o tendrás que cambiar donde pone idioma, que tendrás probablemente spanish (utf8) cambiar a spanish (ISO-8559-1).
Por otra parte, no nos has dicho si lo que ves y haces está, lo ves y haces a través de la base o a través del programa.
Dinos cómo lo tienes y si te permite o no cambiar.
  #13 (permalink)  
Antiguo 01/06/2009, 07:18
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta

Gracias a los dos.

Jurena, loque me dices es exactamente lo que hago. en operaciones cambio el cotejamiento a spanish_ci.
cuando rteviso, el cotejamiento si esta bien pero las tablas siguen igual la consulta todavia no funciona.

huesos52 lo que me dices parece ser la solucion a mi problema, pero no se como ingresarlo
a la base de datos. en phpmyadmin me sale error de sintaxis cuando ejecuto esa funcion.

muchas gracias por su ayuda
  #14 (permalink)  
Antiguo 01/06/2009, 07:42
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: problema en cosnulta

Por lo visto, ya tienes configurada la collation en latin1_spanish_ci. Esto es muy importante, para que los acentos y ñs se codifiquen correctamente.

con respecto a la función, si la estas ejecutando desde phpmyadmin, creo que no funciona.
Al parecer, no es posible ejecutar funciones ni procedimientos desde phpmyadmin (o por lo menos no he encontrado la forma).

trabajes en windows o en linux, abre una terminal (DOS o shell) busca la carpeta bin de mysql y conectate por consola al servidor de mysql.
digita esto:

Código mysql:
Ver original
  1. mysql -u root -p
  2. aca te pide el password.

si root no tiene password basta con
Código mysql:
Ver original
  1. mysql -u root


Te das cuenta que estas en la consola por que te aparece así
Código mysql:
Ver original
  1. mysql>

estando en la consola, selecciona la base de datos con

Código mysql:
Ver original
  1. mysql>use tu_base_de_datos;

debe aparecer database changed.

En este punto, toma la función y pegala... así no tendrás problemas. En algunas versiones de
mysql, la cadena de documentación de operaciones es -- en otros el #. Si te presenta error de
sintaxis en estos signos, cambialo por el otro. (Por lo menos, me ha pasado)

Pruebala y nos cuentas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #15 (permalink)  
Antiguo 01/06/2009, 08:41
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta



funciona perfectamenteeee
me muestra todos los clientes de apellido sanchez

me quedo asi

select *from clientes where translate(lower(ape_cli)) like translate('%sanchez%');

muchas muchas gracias!

tengo otra pregunta

quiero desde visual basic tener un textbox buscar que mientras escribo el nombre o apellido
me aparezcan en una lista desplegable asi como salen en google las busquedas.

me podrian ayudar?

gracias nuevamente me an ayudado mucho
  #16 (permalink)  
Antiguo 01/06/2009, 08:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: problema en cosnulta

pregunta eso en el foro visual basic, que está en programación, subforos
http://www.forosdelweb.com/f69/
Ahí seguro que te ayudarán. Por lo que se refiere a la base sólo tendrás que obtener un listado con el id, para guardar luego ese id, y el nombre, y ordenado por el nombre.
  #17 (permalink)  
Antiguo 01/06/2009, 08:58
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema en cosnulta

esta bien preguntare en ese foro

muchas gracias jurena y huesos52
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 12:57.