gpt4 book ai didi

mysql - 如何链接 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 06:54:59 25 4
gpt4 key购买 nike

我有四个表:seriesseasonsepisodesimages。每个系列由多个季节组成,其中包含多个剧集。每集都附有一张或多张图像。现在我想检索一个系列,包括所有季节、剧集和图像。

SELECT * FROM series
LEFT JOIN seasons ON seasons.seasons_series_id=series.series_id
LEFT JOIN episodes ON episodes.episodes_seasons_id=seasons.seasons_id
LEFT JOIN images ON images.images_id=episodes.episodes_images_id
WHERE series.series_id=1

上面的查询不起作用,因为在运行第二个 LEFT JOIN 等时 seasons_id 不可用。我应该使用嵌套查询吗?

最佳答案

在发布到该问题的查询中,seasons_id 通常IS 可用于第二个LEFT JOIN(以及第三个,如果它出现)到它)。

当您向查询添加其他 JOIN 时,这些 JOIN 不仅会考虑原始 FROM 子句中的表,还会考虑还有到目前为止由任何附加 JOIN 构建的整个结果集。这就是为什么始终为表使用别名是一个好主意的原因之一......可以通过JOIN在查询中多次包含同一个表,别名对于保持同一个表的直接单独实例非常重要。

您的 seasons_id 不可用的唯一情况是,您的 series 记录没有与任何 seasons 记录关联它。在这种情况下,您的 seasons_id 结果中将有一个 NULL 值,并且您将无法在显示的架构中连接任何episode 记录与该系列 记录完全一致。在此架构中,每个系列如果要具有任何剧集图像,则必须至少有一个季节。因此,丢失的 seasons_id 无论如何都不重要,因为您不可能希望匹配该系列的任何episode记录。

关于mysql - 如何链接 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45989298/

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