Php mySQL完全外部联接与内部联接?

Php mySQL完全外部联接与内部联接?,php,mysql,Php,Mysql,我不知道最好的方法是什么,甚至不知道是否可能。假设我有4个表、类别、文档、其他文档,更多文档只有文档有一个类别,其他文档没有。我正在使用MySQL和PHP。我知道在mysql中完全外部连接不是一个选项,必须使用左连接和右连接来解决 我可以得到所有的文件和内部加入他们的id匹配的类别,太棒了 现在我有了上面的数据集,我还想要其他的_文档和更多的_文档“添加”到上述结果集的底部,并在类别不对齐的地方填充空值 假设在more_documents表中有一个文档和其他_documents表没有的唯一列。例

我不知道最好的方法是什么,甚至不知道是否可能。假设我有4个表、类别、文档、其他文档,更多文档只有文档有一个类别,其他文档没有。我正在使用MySQL和PHP。我知道在mysql中完全外部连接不是一个选项,必须使用左连接和右连接来解决

我可以得到所有的文件和内部加入他们的id匹配的类别,太棒了

现在我有了上面的数据集,我还想要其他的_文档和更多的_文档“添加”到上述结果集的底部,并在类别不对齐的地方填充空值

假设在more_documents表中有一个文档和其他_documents表没有的唯一列。例如,phil和dave将数据提交到documents和其他_documents表中,而jon只将数据提交到more_documents表中,因此结果将为:

Id-标题-出版商-类别-唯一的“更多文档”列

1-doc1-dave-global-null

2-doc2-phil-hr-null

3-doc3-dave-operations-null

4-doc4-dave-global-null

5-doc5-jon-global-12345


6-doc6-jon-hr-12345

您想用“驱动程序”子查询构造查询:

select driver.Id, driver.Title, driver.publisher, c.category
from ((select id, categoryId, Title, publisher
       from documents
      ) union
      (select id, NULL, Title, publisher
       from more_documents
      ) union
      (select id, NULL, Title, publisher
       from other_documents
      )
     ) driver left outer join
     category c
     on driver.category_id = c.categoryId
请注意,
union
用于
driver
子查询,因为它会删除重复项


您可能需要额外的连接返回到文档表,以拾取仅在一个表中的字段。

您好,Gordon,谢谢您提供的有用答案,我现在已经接近我所需要的了,但是我;m无法看到此语句的SELECT部分中的c.category在查询中实际执行的操作?你能澄清一下它的作用吗?感谢You@twigg . . . “类别”在问题的样本数据中。