Access 2010. El comando OrderBy me da problemas en una consulta de Unión

Estoy creando una base de datos en la que tengo la siguiente consulta de unión (basada en tres consultas de selección):

SELECT [01_Datos].Clave, z_Profesional.Profesional, [02_Formacion].IdPersona, [01_Datos].Codigo, [01_Datos].Nombre, [01_Datos].Apellido1, [01_Datos].Apellido2, [02_Formacion].Profe.ValueFROM 01_Datos INNER JOIN (z_Profesional INNER JOIN 02_Formacion ON z_Profesional.IdProfe = [02_Formacion].Profe.Value) ON [01_Datos].IdPersona = [02_Formacion].IdPersona
WHERE z_Profesional.Profesional="Juan Garcia"
UNION
SELECT [01_Datos].Clave, z_Profesional.Profesional, [03_Tutoria].IdPersona, [01_Datos].Codigo, [01_Datos].Nombre, [01_Datos].Apellido1, [01_Datos].Apellido2, [03_Tutoria].Profe.ValueFROM 01_Datos INNER JOIN (z_Profesional INNER JOIN 03_Tutoria ON z_Profesional.[IdProfe] = [03_Tutoria].[Profe].[Value]) ON [01_Datos].IdPersona = [03_Tutoria].IdPersona
WHERE z_Profesional.Profesional="Juan Garcia"UNION SELECT [01_Datos].Clave, z_Profesional.Profesional, [04_Revision].IdPersona, [01_Datos].Codigo, [01_Datos].Nombre, [01_Datos].Apellido1, [01_Datos].Apellido2, [04_Revision].Profe.ValueFROM 01_Datos INNER JOIN (z_Profesional INNER JOIN 04_Revision ON z_Profesional.[IdProfe] = [04_Revision].[Profe].[Value]) ON [01_Datos].IdPersona = [04_Revision].IdPersona
WHERE z_Profesional.Profesional="Juan Garcia"

Las tablas que se relacionan en esta consulta son:

z_Profesional

01_Datos

02_Formacion

03_Tutoria

04_Revision

La consulta funciona bien hasta que intento ordenarla poniendo OrderBy [01_Datos].Clave DESC 

al final de todo. Me devuelve el error "La expresión ([X7YZ____2.].[01_Datos].Clave) de Order By incluye campos que no están seleccionados en la consulta." 

Si hago lo mismo pero con uniendo dos consultas de selección entonces el comando OrderBy si que me funciona.

Soy novata en el tema y no se donde esta el error.

1 respuesta

Respuesta
2

El ORDER BY lo tienes que poner en la última SQL, pero sin hacer referencia a la tabla, es decir, prueba añadiendo tan solo ORDER BY Clave.

También puedes hacerlo en dos pasos: haces la consulta de unión tal como la tienes y luego una se selección sobre ella a la que le aplicas el ORDER BY, por ejemplo, si a la consulta de unon la llamas CUnion: SELECT * FROM CUnion ORDER BY Clave.

O incluso esta misma opción, pero en un solo paso: SELECT * FROM (SELECT [01_Datos].Clave...) ORDER BY Clave

Un saludo.


¡Muchas gracias! 

He conseguido resolver el problema con la opción de crear una consulta de selección basada en la de unión.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas