Select's

Hola. Estoy haciendo un select por clave única, con un par de columnas más, desde un par de tablas. Muy simple. Por otro lado estoy haciendo otro select también simple, con la misma clave única que el anterior, pero con distintas columnas y distintas tablas. En el primer select me pueden dar más o menos filas que en el segundo select. La pregunta es, concretamente, ¿cómo puedo hacer para unir ambos resultados en una única vista? Muchas gracias.

1 respuesta

Respuesta
1
A ver si te entiendo...
Tienes una tabla A y una tabla B con la siguiente estructura y datos:
TABLA A (3 campos)
==================
clave_A campo_A1 campo_A2
------- -------- --------
1 a1 a2
TABLA B (4 campos)
==================
clave_B campo_B1 campo_B2 campo_B3
------- -------- -------- --------
1 b1 b2 b3
2 c1 c2 c3
Donde "clave_A" y "clave_B" son las PKs de ambas tablas y, además, quieres hacer un join entre A y B por ese campo. ¿Correcto hasta ahora?
Vale, según tu objetivo... ¿qué estructura debe tener la vista? Dependiendo de cómo lo quieras se hará con joins o con uniones... pero no me queda claro qué es lo que quieres.
Muchas gracias por el interés.
Exacto, es el ejemplo que busco. Lo que necesito ahora es armar una vista con la siguiente estructura:
Clave Col.1 Col.2 Col.3 Col.4 Col.5
1 A1 A2 B1 B2 B3
2 null null C1 C2 C3
¿Se entiende? Quiero que estén todas las columnas y que me llenen con null aquellos campos de claves que no están en una u otra tabla.
Un saludo.
Ok. Creo que lo que sé lo que quieres. Pero primero insertaremos una fila más en la Tabla A con una Porque que no exista en B, con lo que la tabla A querdaría:
CLAVE_A CAMPO_A1 CAMPO_A2
1 a1 a2
3 d1 d2
Con este escenario, la creación de la vista sería:
Create view MiVista as (
select CLAVE_A, CAMPO_A1, CAMPO_A2,CAMPO_B1, CAMPO_B2, CAMPO_B3
from a, b
where clave_a = clave_b(+)
union
select CLAVE_b, CAMPO_A1, CAMPO_A2,CAMPO_B1, CAMPO_B2, CAMPO_B3
from a, b
where clave_a(+) = clave_b
)
Es decir:
Crea una vista con
- Todas aquellas filas de A cuya PORQUE tengan, o no, correspondencia en la PORQUE de B.
- y, también, todas aquellas PORQUE en B que tengan, o no, correspondencia en la PORQUE de A.
El resultado de la vista sería:
CLAVE_A CAMPO_A1 CAMPO_A2 CAMPO_B1 CAMPO_B2 CAMPO_B3
1 a1 a2 b1 b2 b3
2 null null c1 c2 c3
3 d1 d2 null null null
¿Es esto lo que quieres? Si no es así, ya sabes dónde localizarme.
Un saludo,
Tinoco DBA (tinodba)
PD: recuerda cerrar la pregunta si es de tu agrado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas