【问题标题】:MySql link table in union query联合查询中的MySql链接表
【发布时间】:2015-04-29 08:00:22
【问题描述】:

我需要从联合查询中选择一些特定的总和到 3 个应该是的表
在列字段中可用,但我看到一个错误 错误代码:1054。“where 子句”中的未知列“m.Id” 看起来联合子查询中的 M.id 不可见。我如何才能使它工作,没有功能,只能通过查询。

SELECT
    m.COL1,
    m.COL2,
    p.Id,
    (
        SELECT 
            sum(cp) 
        FROM (
                SELECT 
                     count(*) as cp 
                FROM 
                     T1 as o
                WHERE 
                     o.st = 4 
                     AND o.LId = m.Id

                UNION ALL

                SELECT 
                     count(*) as cp 
                FROM 
                     T2 as oh
                WHERE 
                     oh.st = 0 
                     AND oh.LId = m.Id

                UNION ALL

                SELECT 
                    count(*) as cp 
                FROM 
                    T3 as os
                WHERE
                    os.st = 4 
                    AND os.LId = m.Id

            ) as PP 
        ) as IsFB

    FROM 
        TM as m
        JOIN TME as mx ON m.Id = mx.MId
        JOIN TP as p ON m.CID = p.PID

【问题讨论】:

  • 属于联合的每个查询都需要工作,例如SELECT count(*) as cp FROM T1 as o where o.st = 4 and o.LId = m.Id 所以您需要将所需的连接和列添加到其中的每一个中
  • @IanKenney 您能否举个代码示例。我如何将它与 TM 表连接起来
  • 当然 - 发布足够多的架构以显示 T1、T2 和 T3 与 TM TME 和 TP 的关系,同时显示您想要的输出示例
  • @IanKenney 我希望查询中的列可以很好地查看关系,并且输出的不仅仅是 TM 表中的列,我需要子查询的总和,但我不知道如何链接

标签: mysql


【解决方案1】:

如果你不提供更多关于你到底想要什么的信息,很难回答

但是,首先在您的子查询中进行连接,例如:

            SELECT 
                 TM.COL1, TM.COL2, TM.id, count(*) as cp 
            FROM 
                 T1
            JOIN 
                 TM
            ON   
                 T1.LId = TM.id
            GROUP BY 
                 TM.COL1, TM.COL2, TM.id

然后你就可以在外部查询中加入它,比如

SELECT
    UU.COL1,
    UU.COL2,
    TP.ID,
    sum(UU.cp)
FROM (
  ** union query goes here
) UU
JOIN TP ON UU.id = TP.PID
GROUP BY 
  UU.COL1, UU.COL2, TP.ID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多