gpt4 book ai didi

mySQL 创建一个 View ,其中包含 3 个表中 2 个表的所有行组合?

转载 作者:行者123 更新时间:2023-11-30 22:58:08 25 4
gpt4 key购买 nike

首先,这是我制作的 sqlfiddle:http://sqlfiddle.com/#!2/b9d06c

我有 3 个表,project、document_template 和 project_document。

  • 项目表包含项目 ID 和名称。
  • 文档模板表包含文档模板 ID 和模板名称。
  • 项目文档表包含一个id,以及与之关联的项目id和文档模板id,以及发送日期。

我正在尝试创建一个包含项目 ID 和文档模板 ID 的所有组合的 View ,我可以轻松地使用

CROSS JOIN

但是,之后我想在名为“last_sent”的 View 中添加一个额外的列,其中包含模板在项目中使用的最新日期,为了做到这一点,它必须查看信息在 project_document 表中。

我在 sqlfiddle 代码底部的注释中包含了一个示例,以展示它的外观。

我已经尝试在 View 查询的末尾添加不同的左连接,但似乎无法让它显示我想要的方式。 :(

非常感谢任何帮助!

最佳答案

设置:

基本上获取您的笛卡尔积.. 然后将 project_id 和 document_template_id 加入到最近的日期.. 该日期需要与项目 ID 和 doc_temp 单独选择,以便您可以适本地加入它.. 最后在日期上使用 coalesce,这样当存在空值时,您可以将其放入空白

查询:

SELECT 
t1.project_id , t1.document_template_id , COALESCE(t.last_sent, ' ') AS last_sent
FROM
( SELECT p.project_id, dt.document_template_id
FROM project p, document_template dt
GROUP BY project_id, document_template_id
) t1
LEFT JOIN
( SELECT project_id, document_template_id, MAX(sent_on) AS last_sent
FROM project_document
GROUP BY document_template_id
) t ON t.project_id = t1.project_id
AND t.document_template_id = t1.document_template_id;

输出:

+--------------+--------------------------+---------------------+
| project_id | document_template_id | last_sent |
+--------------+--------------------------+---------------------+
| 1 | 1 | |
| 1 | 2 | 2014-08-12 10:00:23 |
| 1 | 3 | 2014-07-11 08:12:40 |
| 2 | 1 | |
| 2 | 2 | |
| 2 | 3 | |
+--------------+--------------------------+---------------------+

DEMO

关于mySQL 创建一个 View ,其中包含 3 个表中 2 个表的所有行组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25333501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com