代码之家  ›  专栏  ›  技术社区  ›  Walid Abdelal

使用多个联合的解决方案?[关闭]

  •  0
  • Walid Abdelal  · 技术社区  · 6 年前

    有没有一种方法可以避免在一次运行中通过一个查询或多个查询使用下面的多个联合?

    访问会引发“字段太多”错误。

    SELECT *
    FROM  FILES f
    WHERE NOT EXISTS (SELECT * 
    
                   FROM Networks
                   WHERE  (f.Network_ID = Networks.Network_ID) AND 
                                 (f.[009_Network] = Networks.Network_Code))
     UNION
     SELECT *
     FROM  FILES f
     WHERE NOT EXISTS (SELECT * 
    
                   FROM    LINE
                   WHERE  (f.[LINE1_ID] = LINE.[LINE_ID]) AND  
                                 (f.[Line 1] = LINE.[Line_Code]))
    UNION
    SELECT *
    FROM  FILES f
    WHERE NOT EXISTS (SELECT * 
    
                   FROM    Transportation_Mode
                   WHERE  (f.[Trans_ID] = Transportation_Mode.[Trans_ID]) AND 
                                 (f.[Transportation_Mode] = Transportation_Mode.[Mode]))
    UNION
    SELECT *
    FROM  FILES f
    WHERE NOT EXISTS (SELECT * 
    
                   FROM    DISCIPLINE
                   WHERE  (f.[Discipline_ID] = DISCIPLINE.[DIS_ID]) AND
                                 (f.[012_Discipline] = DISCIPLINE.[Dis Code]))
    
    3 回复  |  直到 6 年前
        1
  •  0
  •   Edward    6 年前

    我相信通过使用

    SELECT DISTINCT * ... ...WHERE NOT EXISTS ([Select Statement] OR NOT EXISTS [Second Select Statement] OR NOT EXISTS...;)

    但是,这并不能修复您所犯的错误。 Access . 有多少记录和 通路 表可以有,因此在此实例中可能必须将数据拆分为多个表。

    这个 recordset 限制 通路 query 是1千兆字节。

    https://support.office.com/en-us/article/access-specifications-0cf3c66f-9cf2-4e32-9568-98c1025bb47c

        2
  •  0
  •   Marc-Olivier Villeneuve    6 年前

    您可以尝试使用“左联接”或“内部联接”来链接多个表。

    Select * from FILES1 f1 
    LEFT JOIN FILES2 f2
       ON f1.ID = f2.ID;
    

    希望这有帮助!

        3
  •  0
  •   Adam    6 年前

    左连接?

    SELECT *
      FROM (((Files f LEFT JOIN Networks net
            ON f.Network_ID = net.network_id AND ...)
           LEFT JOIN Line line
            ON f.line1_id = line.line_id AND ... )
           LEFT JOIN Transportation_Mode tmod
            ON f.trans_id = tmod.trans_id AND ... )
           LEFT JOIN DISCIPLINE disc
            ON f.Discipline_ID = disc.Discipline_ID AND ...
     WHERE net.network_id IS NULL
        OR line.line_id IS NULL
        OR tmod.trans_id IS NULL
        OR disc.Discipline_ID IS NULL;
    

    对于你的另一个问题…

    访问会引发“字段太多”错误。

    尝试不选择返回所有字段。限制类似于255个字段。你真的需要所有的255吗?