使用Union Select合并查询

时间:2018-11-23 20:13:14

标签: sql ms-access

我正在尝试将两个查询与Union Select合并,但是我找不到我做错的事...以前我没有使用过这种方法,但是一定有一些我不知道的地方意识到这一点给我带来了麻烦。

我要合并的两个查询如下:

SELECT Parejas.[ID Pareja], Parejas.NombrePareja AS [Nombre Pareja / Paciente], Parejas.FechaAlta AS [Fecha de alta], Count(Sesiones.[ID sesión]) AS [CuentaDeID sesión], Profesional.Nombre
FROM Paciente INNER JOIN (Profesional INNER JOIN (Parejas INNER JOIN Sesiones ON Parejas.[ID Pareja] = Sesiones.[ID Pareja]) ON Profesional.[ID Profesional] = Sesiones.[ID Profesional]) ON Paciente.[ID Paciente] = Parejas.Pacientes.Value
WHERE (((Parejas.FechaAlta)>[Formularios]![Consulta_duracion]![Texto15]))
GROUP BY Parejas.[ID Pareja], Parejas.NombrePareja, Parejas.FechaAlta, Profesional.Nombre;

第二个是这个:

SELECT Parejas.[ID Pareja], Paciente.Nombre AS [Nombre Pareja / Paciente], Paciente.FechaAlta AS [Fecha de alta], Count(Sesiones.[ID sesión]) AS [CuentaDeID sesión], Profesional.Nombre
FROM (Profesional INNER JOIN (Paciente INNER JOIN Sesiones ON Paciente.[ID Paciente] = Sesiones.[ID Paciente]) ON Profesional.[ID Profesional] = Sesiones.[ID Profesional]) INNER JOIN Parejas ON Paciente.[ID Paciente] = Parejas.Pacientes.Value
WHERE (((Paciente.FechaAlta)>[Formularios]![Consulta_duracion]![Texto15]))
GROUP BY Parejas.[ID Pareja], Paciente.Nombre, Paciente.FechaAlta, Profesional.Nombre;

我使用Union子句合并两个查询,但始终收到以下错误消息:

“您的查询未将指定的表达式'ID Pareja”作为聚合函数的一部分”

也许你们当中的任何人对问题到底有什么线索?

非常感谢您!

edit:我将所有表和关系附加到图像上。如您所见,“ Paciente”和“ Sesiones”是设计其他所有表的主要表。 enter image description here

1 个答案:

答案 0 :(得分:0)

我认为以下内容应产生有效的UNION查询-

SELECT u.*
FROM
(
    SELECT 
        Parejas.[ID Pareja], 
        Parejas.NombrePareja AS [Nombre Pareja / Paciente], 
        Parejas.FechaAlta AS [Fecha de alta], 
        Count(Sesiones.[ID sesión]) AS [CuentaDeID sesión], 
        Profesional.Nombre
    FROM 
        Paciente INNER JOIN 
        (
            Profesional INNER JOIN 
            (
                Parejas INNER JOIN Sesiones ON 
                Parejas.[ID Pareja] = Sesiones.[ID Pareja]
            ) 
            ON Profesional.[ID Profesional] = Sesiones.[ID Profesional]
        ) 
        ON Paciente.[ID Paciente] = Parejas.Pacientes.Value
    WHERE 
        Parejas.FechaAlta > [Formularios]![Consulta_duracion]![Texto15]
    GROUP BY 
        Parejas.[ID Pareja], 
        Parejas.NombrePareja, 
        Parejas.FechaAlta, 
        Profesional.Nombre
) u
UNION ALL
SELECT v.*
FROM
(
    SELECT 
        Parejas.[ID Pareja], 
        Paciente.Nombre AS [Nombre Pareja / Paciente], 
        Paciente.FechaAlta AS [Fecha de alta], 
        Count(Sesiones.[ID sesión]) AS [CuentaDeID sesión], 
        Profesional.Nombre
    FROM 
        (
            Profesional INNER JOIN 
            (
                Paciente INNER JOIN Sesiones ON 
                Paciente.[ID Paciente] = Sesiones.[ID Paciente]
            )
            ON Profesional.[ID Profesional] = Sesiones.[ID Profesional]
        )
        INNER JOIN Parejas ON 
        Paciente.[ID Paciente] = Parejas.Pacientes.Value
    WHERE 
        Paciente.FechaAlta > [Formularios]![Consulta_duracion]![Texto15]
    GROUP BY 
        Parejas.[ID Pareja], 
        Paciente.Nombre, 
        Paciente.FechaAlta, 
        Profesional.Nombre
) v

(未经测试)