我有两个几乎相同的交叉表查询,一个是按顺序进行的,另一个是不按顺序进行的(开/关复选框(交叉表上的条件为真或假))MTO一个有203行,NMTO一个如果我离开连接有160行,所以我从MTO获得所有内容我得到213行但是我需要总共225行但是17行只有NMTO数据并且没有被包含我试图仅使用条件重写连接而且我没有运气
我可能遗漏了一些简单的东西(我希望)
答案 0 :(得分:0)
您需要创建包含关键列的2个数据集的“超集”,然后使用外部联接在查询中间使用
第1阶段:创建UNION查询以从MTO和NMTO获取完整的唯一键集。这应包含构成超集的225条记录。
第2阶段:创建第二个查询,其中包含此UNION查询以及MTO和NMTO。设置连接以包括来自UNION查询和来自MTO的匹配记录的所有内容;对UNION查询和NMTO之间的连接执行完全相同的操作。
现在应该返回225条记录。
=============================================== ===================
编辑:工作实例
假设有2个表(或查询),mto
和nmto
以及要加入的一致ID字段,以下查询将起作用:
SELECT superset.id, mto.mto_1, mto.mto_2, nmto.nmto_1, nmto.nmto_2
FROM ((SELECT mto.id from mto UNION SELECT nmto.id from nmto) AS superset
LEFT JOIN mto ON superset.id = mto.id)
LEFT JOIN nmto ON superset.id = nmto.id;
您可以扩展此方法以包含两个以上的表,其中超集位于中心。如有任何问题请在下面评论,我将提供屏幕截图和/或更多信息。