【发布时间】:2012-12-11 11:54:13
【问题描述】:
以下是我的数据库的架构。我一直在处理查询,但无法获得正确的结果。
TABLE: CUSTOMERINFORMATION
FIELDS: CUSTID, ACTOPTIONID,VAT,MINIMUMDOCT
TABLE: ONLINEORDERS
FIELDS: CUSTID, TOTALQUANTITY
TABLE: OFFLINEORDERS
FIELDS: CUSTID, TOTALQUANTITY
TABLE: ACTOPTS
FIELDS: ACTOPTIONID,ACTNAME
这样的输出: 临时表:CUSTID、ACTOPTIONID、TOTALONLINEQ、TOTALOFFLINEQ、ACTNAME
我需要将上述所有表格和提到的字段合并到一个表格中。 我们还需要确保返回 NULL 行;表示以上所有内容的 UNION ALL。
这是为了创建一个数据导出实用程序,将上述所有内容导出到另一个表中。但我们需要确保即使表中没有与其他记录匹配的记录,也不会排除任何记录。
已编辑
以下是我的查询:
SELECT table1.*, table2.*, table3.*
FROM (SELECT ao.actname,
ci.custid,
ci.actoptionid,
ci.minimumdoct,
ci.vat
FROM customerinformation ci, actoptions ao
WHERE ci.actoptionid = ao.actoptionid) table1
LEFT JOIN (SELECT custid, totalquantity, FROM onlineorders) table2
ON table1.custid = table2.custid
LEFT JOIN (SELECT custid FROM offlineorders) table3
ON table2.custid = table3.custid
但是,以上内容不会从 RIGHT 的表中返回行。我想将 ROWS 从表中返回到右侧,为此我认为我需要在所有这些上使用 UNION ALL。我该怎么做?
【问题讨论】:
-
你试过什么?您是否听说过
FULL OUTER JOIN以及如何在 MySQL 中使用LEFT JOINs、RIGHT JOINs 和UNION的组合来模拟它? -
是的,我查看了这个网站并了解了 LEFT、RIGHT 和 UNION ALL 来模拟 FULL OUTER JOIN。让我编辑问题并分享我的查询。我应该早点分享的。
-
好的,我已编辑问题以包含我当前的查询。请看一看。谢谢
-
你说“右边的桌子”是什么意思?了解您需要什么的最简单方法是提供样本数据和结果取决于此。