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

union de tablas

Estas en el tema de union de tablas en el foro de Bases de Datos General en Foros del Web. puedo unir dos tablas mediante campos que no sean llaves primarias ni foraneas .... ejemplo en estas dos tablas id_A e id_B son llaves primarias ...
  #1 (permalink)  
Antiguo 26/11/2009, 12:18
 
Fecha de Ingreso: mayo-2005
Mensajes: 121
Antigüedad: 19 años, 6 meses
Puntos: 0
union de tablas

puedo unir dos tablas mediante campos que no sean llaves primarias ni foraneas .... ejemplo

en estas dos tablas id_A e id_B son llaves primarias

================================================== ==

tabla 1
______________________________
id_A - nombre - apellido - ide_persona

tabla 2
____________________________
id_B - ciudad - calle - ide_persona

================================================== =

se podra unir las tablas 1 y 2 mediante el campo: ide_persona

asi:

SELECT `nombre` , `apellido`
FROM tabla 1
CROSS JOIN tabla 2 ON tabla 2.ide_persona = tabla 1.ide_persona


...................
  #2 (permalink)  
Antiguo 27/11/2009, 03:35
 
Fecha de Ingreso: julio-2006
Ubicación: Madrid
Mensajes: 943
Antigüedad: 18 años, 3 meses
Puntos: 56
Respuesta: union de tablas

Hola,
No sé si el CROSS JOIN lo soportan todos los gestos de BD, sé que Oracle sí lo soporta.

Esto, lo leen todos:

Código:
SELECT `nombre` , `apellido`
FROM tabla 1, tabla2
WHERE tabla 2.ide_persona = tabla 1.ide_persona
Lo que está en diferente color es la diferencia con la select que tú pusiste.

Saludos.
  #3 (permalink)  
Antiguo 27/11/2009, 05:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: union de tablas

Si la primera contiene los datos de la persona y la segunda los datos de la dirección de la persona, esto:
Código sql:
Ver original
  1. SELECT `nombre` , `apellido`
  2. FROM tabla 1
  3. CROSS JOIN tabla 2 ON tabla 2.ide_persona = tabla 1.ide_persona
no tiene sentido. En todo caso el ID de la primera tabla debe relacionarse con tabla2.ide_persona.
Aún así, tendría sentido si y sólo si una persona tiene más de un domicilio.

Fuera de eso, no hay ninguna limitación en cuanto a cruzar datos entre campos no clave. Lo que hay que ver es la lógica de la consulta, es decir qué es lo que se quiere obtener, y asegurarse de no perder consistencia de información.
Un entrecruzamiento entre tablas a traves de , por ejemplo, el código postal, puede parecer lógico, pero emparejará todos los registros que posean en ambas tablas el mismo, generando un producto cartesiano.
Esas consultas deben tener uno o varios parámetros adicionales que permitan discriminar la correspondencia, o bien los campos deberán tener una relación 1:1, en cuyo caso es probable que sean de todos modos claves primarias o foráneas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 14:30.