gpt4 book ai didi

mysql - 带 View 的sql查询

转载 作者:行者123 更新时间:2023-11-30 23:20:54 25 4
gpt4 key购买 nike

我有以下数据库模式:

schema高分辨率图像在这里 http://s18.postimage.org/mlyw5gea1/schema2.png

如你所见:

演讲者直接与 session 相关联。

一个部分直接与一个 session 相关联。

扬声器通过 speakerFunction 间接关联到一个部分,然后是 secion_speakerfunction-join-table 直到该部分。

如何让间接 session 不是直接 session 之一的所有发言人

欢迎任何帮助。

谢谢

最佳答案

很遗憾,我无法缩放您的图形,因此以下内容涉及一些猜测。

正如您已经说过的,有两种方法可以从任何给定的 session 到相关的演讲者。首先,您可以获得与 session 直接关联的发言人列表:

SELECT speaker.* FROM `session-speaker-join-table`
JOIN speaker
ON speaker.id=`session-speaker-join-table`.speaker_id
WHERE `session-speaker-join-table`.session_id=1234

下面是如何通过 speakerfunction 获取间接链接的演讲者列表:

SELECT speaker.* FROM section
JOIN `section-speakerfunction-join-table`
ON `section-speakerfunction-join-table`.section_id=section.id
JOIN speakerfunction
ON speakerfunction.id=`section-speakerfunction-join-table`.speakerfunction_id
JOIN speaker
ON speaker.id=speakerfunction.speaker_id
WHERE section.session_id=1234

编辑:阅读您的评论后,我了解到您想要查询 2 的结果减去查询 1 的结果。这可以通过向第二个查询添加 LEFT JOIN 然后检查是否存在来实现不匹配,像这样:

SELECT speaker.* FROM section
JOIN `section-speakerfunction-join-table`
ON `section-speakerfunction-join-table`.section_id=section.id
JOIN speakerfunction
ON speakerfunction.id=`section-speakerfunction-join-table`.speakerfunction_id
JOIN speaker
ON speakerfunction.speaker_id = speaker.id
LEFT JOIN `session-speaker-join-table`
ON `session-speaker-join-table`.session_id=section.session_id
AND `session-speaker-join-table`.speaker_id=speaker.speaker_id
WHERE section.session_id=1234 AND `session-speaker-join-table`.speaker_id IS NULL

(我还更改了表名并包含了反引号,我希望我能捕获它们。还重新格式化了查询以提高可读性。)

关于mysql - 带 View 的sql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15486977/

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