gpt4 book ai didi

MySQL - 获取另一列上具有相同 ID 但不同特定值的行

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

我知道这个标题不是很有帮助,我自己无法弄清楚这个问题的部分原因是我不知道如何表达它,所以我无法用谷歌搜索它。

无论如何,我正在制作一个 Netflix 风格的网站,其中包含从我的 DVD 收藏中摘取的电影和电视节目。这是一个在我的 Raspberry Pi 上运行的 LAMP 堆栈。我希望能够通过从一堆复选框中选择流派来按流派进行搜索。我希望它能够正常工作,这样如果我检查“恐怖”和“喜剧”,搜索结果只会返回同时具有这两种类型的电影/电视节目,而不是非此即彼。

所以我有几个 MySQL 表:THR_MOVIE、THR_SHOW 和 THR_GENRE。 THR_MOVIE 和 THR_SHOW 的结构对于这个问题来说并不重要,只需知道每个电影/电视节目仅占用一行并具有唯一的 ID 即可。以下是 THR_GENRE 的结构:

CREATE TABLE `THR_GENRE` (
`media_id` INT(7) UNSIGNED NOT NULL,
`genre` VARCHAR(255) NOT NULL,
`media_type` ENUM('movie','show') NOT NULL,
`date_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`media_id`, `genre`, `media_type`))

显然,如果 media_type 是“movie”,则 media_id 是 THR_MOVIE ID,而不是 THR_SHOW ID。流派表中的一些示例数据可能如下所示:

row 1: media_id=12, genre='horror', media_type='movie'
row 2: media_id=12, genre='comedy', media_type='movie'

那么这个查询将如何工作呢?我需要获取电影数据,因此需要将 THR_MOVIE 与 THR_GENRE 结合起来以获取电影,然后对 THR_SHOW 和 THR_GENRE 执行相同操作以获取电视节目。

最佳答案

您可以使用left outer join :

select
*
from
THE_GENRE g
left outer join
THR_MOVIE m
on m.id = g.media_id
and g.media_type = 'movie'
left outer join
THR_SHOW s
on s.id = g.media_id
and g.media_type = 'show'

查询将返回电影表和节目表的列。使用此查询结果的代码将需要检查 media_type 值并使用 movie表列(如果类型为“电影”或 show)表列(如果类型为 show) .

关于MySQL - 获取另一列上具有相同 ID 但不同特定值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46256020/

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