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

Filtrar Consulta

Estas en el tema de Filtrar Consulta en el foro de Bases de Datos General en Foros del Web. Buenas tardes foreros, Tengo que extraer unos datos de una tabla que tiene mas o menos esta estructura; id_cliente--------direccion--------------nombre------------apellidos 1------------------calle nueva------------------------------------------ 1-------------------------------------------jose-----------------perez 2------------------calle vieja-------------------------------------------- 2-------------------------------------------juan-----------------lopez ...
  #1 (permalink)  
Antiguo 29/09/2008, 09:20
Avatar de SOVEREK  
Fecha de Ingreso: julio-2008
Mensajes: 47
Antigüedad: 15 años, 10 meses
Puntos: 0
Pregunta Filtrar Consulta

Buenas tardes foreros,
Tengo que extraer unos datos de una tabla que tiene mas o menos esta estructura;
id_cliente--------direccion--------------nombre------------apellidos
1------------------calle nueva------------------------------------------
1-------------------------------------------jose-----------------perez
2------------------calle vieja--------------------------------------------
2-------------------------------------------juan-----------------lopez

el id_cliente es común, en un registro aparece la dirección y en otro el nombre y apellidos
necesitaría una forma de recuperar la dirección y el nombre en una sola fila, ya que tengo que tratar cientos de clientes.

¿alguien me puede ayudar?

gracias

Última edición por SOVEREK; 29/09/2008 a las 09:44 Razón: reformular pregunta
  #2 (permalink)  
Antiguo 29/09/2008, 15:38
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Filtrar Consulta

Si siempre es así, es decir, en un registro tienes la dirección y en otro el nombre y apellidos, tal vez podría ayudarte esto.
Código sql:
Ver original
  1. UPDATE tabla t1 INNER JOIN tabla t2 ON (t1.idcliente = t2.idcliente AND t1.direccion <> t2.direccion) SET t1.direccion = IF(t2.direccion IS NULL OR t2.direccion = '', t1.direccion, t2.direccion), t1.nombre = IF(t2.nombre IS NULL OR t2.nombre = '', t1.nombre, t2.nombre), t1.apellidos = IF(t2.apellidos IS NULL OR t2.apellidos = '', t1.apellidos, t2.apellidos)

Con ella tendrás todos los datos en todos los registros. Luego te tocará eliminar las repeticiones...
  #3 (permalink)  
Antiguo 30/09/2008, 01:03
Avatar de SOVEREK  
Fecha de Ingreso: julio-2008
Mensajes: 47
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Filtrar Consulta

Ante todo muchas gracias por la respueta Jurena,

El problema es que no puedo modificar los datos de la tabla, únicamente consultarlos ya que se trata de una tabla corporativa que se encuentra en un servidor.
  #4 (permalink)  
Antiguo 30/09/2008, 08:48
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Filtrar Consulta

Para consultarlos, prueba así, aunque seguro que hay otras soluciones con mejor rendimiento:
Código sql:
Ver original
  1. SELECT IF( t1.nombre <> '', t1.nombre, t2.nombre ) AS nombre, IF( t1.apellidos <> '', t1.apellidos, t2.apellidos ) AS apellidos, IF( t1.direccion <> '', t1.direccion, t2.direccion ) AS direccion
  2. FROM tabla t1
  3. INNER JOIN tabla t2 ON ( t1.idcliente = t2.idcliente
  4. AND t1.direccion <> t2.direccion )
  5. GROUP BY t1.idcliente
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:16.