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

Busqueda registro en dos tablas

Estas en el tema de Busqueda registro en dos tablas en el foro de Mysql en Foros del Web. Hola!!! Buen día, tengo un problema con la búsqueda nombres en dos tablas con datos similares, estoy realizando un sistema web ("Archivo Digital") que almacenará ...
  #1 (permalink)  
Antiguo 22/08/2008, 15:53
Avatar de gisek  
Fecha de Ingreso: julio-2008
Mensajes: 12
Antigüedad: 16 años, 3 meses
Puntos: 0
Exclamación Busqueda registro en dos tablas

Hola!!! Buen día, tengo un problema con la búsqueda nombres en dos tablas con datos similares, estoy realizando un sistema web ("Archivo Digital") que almacenará datos, como el nombre del cliente, tipo de cliente (Moral, Asalariado) y un pdf que contiene su documentación; El caso es que cuando busco el nombre de algún cliente ya sea persona mora o asalariado no me encuentra nada


Tabla asalariado
-------------------------------------
asalariados.id_clientasm
asalariados.contrato
asalariados.nombre
asalariados.pdf

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Tabla morales
-------------------------------------
morales.id_clientmor
morales.contrato
morales.nombre
morales.pdf

nose si mi problema se de mysql o php mi query es:

$qry="select asalariados.id_clientasm,
asalariados.contrato,
asalariados.nombre,
asalariados.pdf,
morales.id_clientmor,
morales.contrato,
morales.nombre,
morales.pdf
from asalariados
inner join morales
on asalariados.id_clientasm = morales.id_clientmor,
where asalariados.nombre like '$cache%'
or morales.nombre like '$cache%'";

y con php

while($obj = mysql_fetch_array($res)){
$g = $obj[id_clientasm];
$i = $obj[id_clientmor];
$s = $obj[contrato];
$e = $obj[nombre];
$k = $obj[pdf];
}

Espero me puedan ayudar Saludos , Gracias
  #2 (permalink)  
Antiguo 23/08/2008, 00:33
 
Fecha de Ingreso: diciembre-2006
Mensajes: 127
Antigüedad: 17 años, 11 meses
Puntos: 1
Respuesta: Busqueda registro en dos tablas

Tus tablas estan algo extrañas que es lo que realmente quieres hacer!!!.....mas informacion
  #3 (permalink)  
Antiguo 23/08/2008, 00:58
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Busqueda registro en dos tablas

Soy de la opinión de abulon: tus tablas son muy extrañas.

Cita:
Tabla asalariado
-------------------------------------
asalariados.id_clientasm
asalariados.contrato
asalariados.nombre
asalariados.pdf

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Tabla morales
-------------------------------------
morales.id_clientmor
morales.contrato
morales.nombre
morales.pdf
Lo lógico sería una tabla con todos los nombres:
Clientes
-----------------
clientes.id
clientes.nombre
clientes.apellidos

y luego, si fuera necesario, otra tabla:
Contratos
-----------------
Contratos.id
Contratos.contrato
Contratos.pdf
Contratos.idcliente
Contratos.tipo (aquí mediante un campo numérico pequeño podrías poner 0 para moral y 1 para asalariado).

Luego harías la consulta con un inner join entre las tablas clientes y contratos con el on clientes.id=contratos.idcliente

y la consulta sería algo así: SELECT clientes.nombre, clientes.apellidos, contratos.contrato, contratos.odf, IF(contrato = 0, 'moral', 'asalariado') tipo_contrato FROM clientes inner join contratos on clientes.id=contratos.idcliente WHERE clientes.apellidos LIKE 'Martínez Sanz' ORDER BY clientes.apellidos

No obstante, si quieres encontrar los nombres con la estructura que tienes (vuelvo a recomendarte el cambio a otra), deberías hacerlo así:
Cita:
(SELECT asalariados.id_clientasm, asalariados.contrato, asalariados.nombre, asalariados.pdf from asalariados WHERE asalariados.nombre LIKE 'Martínez Sanz'
)
UNION ALL
(SELECT morales.id_clientmor, morales.contrato, morales.nombre, morales.pdf from morales WHERE morales.nombre LIKE 'Martínez Sanz'
)

ORDER BY asalariados.nombre
En mi opinión, estás duplicando información (el nombre) y haciendo un uso no muy correcto de una base relacional. Por eso te recomiendo que eches un vistazo a tutoriales sobre base de datos relacionales y sobre reglas de normalización.

Última edición por jurena; 23/08/2008 a las 03:10
  #4 (permalink)  
Antiguo 25/08/2008, 14:21
Avatar de gisek  
Fecha de Ingreso: julio-2008
Mensajes: 12
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: Busqueda registro en dos tablas

Si Gracias a todos por su aporte, la solución fue como lo dijo “jurena” no conocía la función unión all y la estructura de las tablas lo tomaré en cuenta. Gracias y Saludos.
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 13:54.