Php 使用其他表中的数据进行SQL查询

Php 使用其他表中的数据进行SQL查询,php,mysql,sql,Php,Mysql,Sql,我有一个规范化的表: `Table: TheMovies` id | MovieName --------------------- 1 | Zootopia 2 | Moana 3 | Toy Story `Table: TheGenres` id | GenreName --------------------- 21 | Action 22 | Animation 23 | Adventur

我有一个规范化的表:

`Table: TheMovies`
id      | MovieName 
---------------------
1       | Zootopia 
2       | Moana 
3       | Toy Story

`Table: TheGenres`
id      | GenreName 
---------------------
21      | Action 
22      | Animation 
23      | Adventure

`Table: mMoviesGenres`
movieID | genreID 
---------------------
1       | 21 
1       | 23 
2       | 22
2       | 23 
2       | 21 
3       | 23
所有这些都很好,但我需要一个查询,它将根据至少一种类型的MovieID=1为我选择类似的电影


您能给我一个sql查询吗?这样我就有了这样做的基本想法,以便能够创建更高级的查询?

要使用另一个表中的数据进行查询,可以使用join子句将两个或多个表连接到一个表中

SELECT TheMovies.*
FROM mMoviesGenres
JOIN TheMovies
  ON mMoviesGenres.MovieID = TheMovies.MovieID
WHERE
  mMoviesGenres.MovieId <> 1
  AND mMoviesGenres.GenreID IN (SELECT GenreID FROM mMoviesGenres WHERE MovieID = 1)
SELECT TheMovies.* FROM mMoviesGenres JOIN TheMovies ON mMoviesGenres.MovieID = TheMovies.MovieID WHERE mMoviesGenres.MovieId <> 1 AND mMoviesGenres.GenreID IN (SELECT GenreID FROM mMoviesGenres WHERE MovieID = 1)

了解有关加入的更多信息:

来吧。试试看。@李斯特先生一部电影可以有多种类型,如我提供的表格所示。您的问题不清楚。你可以展示你想要的输出或者清楚地解释你的目标是什么吗?当你得到两部同名的电影时,你会遇到问题。为发布的年份添加一列就足够了。但在当今时代,您的数据库是否与世界其他地区隔离存在?我建议您看一看:娱乐标识符注册表是一个全球唯一标识符系统,用于各种视听对象,包括电影、电视和广播节目……这对我不起作用,它只显示所有电影。@PHPLover:根据您提供的数据,这是预期的结果。电影1有21和23种类型。您希望所有电影与电影1至少共享一种类型。电影2共享类型21和23,电影3共享类型23。@JiriHrazdil:可能输出需要显示一个电影名称。@PHPLover:如果上述场景是预期输出,在这种情况下,在查询结束时使用限制1将有助于解决您的问题。但它将根据电影ID的升序显示电影名称。希望能有帮助。这对我来说很有效,如果我想让所有的体裁都一样,变得相似呢?你可以试着添加条件,你能给我举个例子吗?我是mysql新手: