SQL - Tablas cruzadas cuya fuente sea una tabla de union

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 20 puestos en SQL (en relación al último mes)
Gráfica de SQL

Tablas cruzadas cuya fuente sea una tabla de union

Publicado por Dan 8a (2 intervenciones) el 23/05/2018 10:10:03
Hola expertos, acudo a su sapiencia

Tengo 4 tablas

PEKARDEX

PBKARDEX

PUKARDEX

CDMODULO

Las 3 primeras tablas contienen los mismos campos (ideducando, cvemodulo, icalificacion, faplica), solo que en la primera tengo adultos activos, en la segunda adultos en baja y en la tercera adultos que terminaron sus estudios y en la cuarta tabla tengo un catalogo de módulos (cvemodulo, cdescmodulo) que uno por medio del campo cvemodulo para saber la descripción del módulo. Pues bien, lo que requiero es hacer una tabla de referencias cruzadas donde ponga la calificación (icalificacion) en el campo cdescmodulo donde la fuente sea uniendo las 3 primeras tablas (tablas de unión):

1
2
3
SELECT * FROM PEKARDEX
UNION SELECT * FROM PBKARDEX
UNION SELECT * FROM PUKARDEX

Al final este seria el resultado

1
2
3
4
5
6
7
Matemáticas    Español     CSociales <--- campo cdescmodulo
 
ideducando15           5                      7               10   (PEKARDEX)
 
ideducando20           8                     10               10   (PBKARDEX)
 
ideducando30           6                      7               10   (PUKARDEX)



Puedo decirles que he hecho tablas cruzadas pero con una sola tabla

1
2
3
4
5
6
SELECT *
FROM (SELECT PEKARDEX.ideducando, CDMODULO.cdesmodulo, PEKARDEX.ccveformacalif, PEKARDEX.icveformaacredita, PEKARDEX.icveetapaebucn, Max(PEKARDEX.icalificacion) As Calificacion, PEKARDEX.lacredita, PEKARDEX.faplica
FROM PEKARDEX INNER JOIN CDMODULO ON PEKARDEX.icvemodulo = CDMODULO.icvemodulo
GROUP BY PEKARDEX.ideducando, CDMODULO.cdesmodulo, PEKARDEX.ccveformacalif, PEKARDEX.icveformaacredita, PEKARDEX.icveetapaebucn,PEKARDEX.icalificacion, PEKARDEX.lacredita, PEKARDEX.faplica) AS C
PIVOT (Max(C.Calificacion) FOR C.[cdesmodulo] IN ([La Palabra],
[La Palabra de la Experiencia], [Para Empezar], [Matematicas para Empezar])) PVT

Pero lo que quiero es hacer lo mismo pero con tablas de union

Alguna manera de que lo pueda hacer?

Sugerencias?

Gracias de antemano, un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Tablas cruzadas cuya fuente sea una tabla de union

Publicado por Raymundo (3 intervenciones) el 23/05/2018 13:35:57
Buenas Dan

Y cómo es qué tienes tres tablas iguales para hacer eso? No sería más fácil darle un valor a cada estado (también sería bueno crear una tabla para guardar los estados y poder consultarlos)?

En cuanto a la UNION, el problema que tienes es que todas las consultas tienen que tener el mismo número de campos en el SELECT y puede que alguna de tus tablas tenga algún campo a mayores. Lo que no tengo muy claro es porque haces agrupaciones y usas el PIVOT, puedes poner una captura de los datos que sacas con esta consulta?

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 3
Ha disminuido su posición en 20 puestos en SQL (en relación al último mes)
Gráfica de SQL

Tablas cruzadas cuya fuente sea una tabla de union

Publicado por Dan 8a (2 intervenciones) el 24/05/2018 01:44:06
Hola, Ray.
Antes que nada, gracias por contestar.

Te platico, en mi institución ya se tiene un sistema desarrollado bajo ese esquema, con una gran diversidad de tablas, dicho en otras palabras:
cuando una persona se incorpora, de inmediato queda en la tabla PEKARDEX, después de un tiempo determinado (9 meses de no tener actividad) ese registro se va a la tabla PBKARDEX y posterior a ello (2 años) brinca a la tabla PUKARDEX. Se que es una mala practica y estoy de acuerdo con tu comentario, pero dadas las circunstancias es con lo que tengo que trabajar.

Entonces se nos ha ocurrido que por medio de una tabla de unión juntar registros con las 3 tablas (tener una sola, hacer un barrido) para no andar navegando entre tablas valga la redundancia y con la tabla cruzada tener un reporte tabular para una mejor identificación de sus avances en los módulos.

Entiendo que si realizo de tajo una consulta de unión y la mando llamar después para elaborar la pivot table - tabla cruzada me seria mas fácil, pero para ahorrar código y pasos se me ocurría realizarlo en una sola consulta, ademas de que es algo que me pica la curiosidad.

Por otra parte, las 3 tablas tienen exactamente el mismo numero de campos
He de decir que si hay algún otro mecanismo, estoy en la disposición de aprender, quizás y este haciendo las cosas mal.
Saludos.

Pd. apenas llegue a casa envío la imagen del resultado de la consulta anterior a la que se hace referencia como ejemplo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar