Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL为非常大的数据库留下了1个结果_Mysql_Database_Left Join_Movies - Fatal编程技术网

MySQL为非常大的数据库留下了1个结果

MySQL为非常大的数据库留下了1个结果,mysql,database,left-join,movies,Mysql,Database,Left Join,Movies,我有一个很大的电影数据库,我想按年份和类型搜索电影 我有3张桌子要处理: 1. movies (Key TITLE_ID) 2. movie2genre (TITLE_ID + GENRE_ID) 3. genre (Key GENRE_ID) 电影: +----------+---------------+------+ | TITLE_ID | TITLE | YEAR | +----------+---------------+------+ | 10001 | M

我有一个很大的电影数据库,我想按年份和类型搜索电影

我有3张桌子要处理:

1. movies (Key TITLE_ID)
2. movie2genre (TITLE_ID + GENRE_ID)
3. genre (Key GENRE_ID)
电影:

+----------+---------------+------+
| TITLE_ID |     TITLE     | YEAR |
+----------+---------------+------+
|  10001   | Matrix        | 1999 |
|  10002   | Walk on Water | 2004 |
+----------+---------------+------+
+----------+----------+
| TITLE_ID | GENRE_ID |
+----------+----------+
|  10001   |    1     |
|  10001   |    2     |
|  10002   |    2     |
|  10002   |    4     |
|  10001   |    3     |
+----------+----------+
+----------+-----------+
| GENRE_ID | GENRE_TXT |
+----------+-----------+
|    1     | Action    |
|    2     | Adventure |
|    3     | Thriller  |
|    4     | Fantasy   |
+----------+-----------+
+----------+--------+------+-----------+
| TITLE_ID | TITLE  | YEAR | GENRE_TXT |
+----------+--------+------+-----------+
|  10001   | Matrix | 1999 |  Action   |
+----------+--------+------+-----------+
movie2genre:

+----------+---------------+------+
| TITLE_ID |     TITLE     | YEAR |
+----------+---------------+------+
|  10001   | Matrix        | 1999 |
|  10002   | Walk on Water | 2004 |
+----------+---------------+------+
+----------+----------+
| TITLE_ID | GENRE_ID |
+----------+----------+
|  10001   |    1     |
|  10001   |    2     |
|  10002   |    2     |
|  10002   |    4     |
|  10001   |    3     |
+----------+----------+
+----------+-----------+
| GENRE_ID | GENRE_TXT |
+----------+-----------+
|    1     | Action    |
|    2     | Adventure |
|    3     | Thriller  |
|    4     | Fantasy   |
+----------+-----------+
+----------+--------+------+-----------+
| TITLE_ID | TITLE  | YEAR | GENRE_TXT |
+----------+--------+------+-----------+
|  10001   | Matrix | 1999 |  Action   |
+----------+--------+------+-----------+
类型:

+----------+---------------+------+
| TITLE_ID |     TITLE     | YEAR |
+----------+---------------+------+
|  10001   | Matrix        | 1999 |
|  10002   | Walk on Water | 2004 |
+----------+---------------+------+
+----------+----------+
| TITLE_ID | GENRE_ID |
+----------+----------+
|  10001   |    1     |
|  10001   |    2     |
|  10002   |    2     |
|  10002   |    4     |
|  10001   |    3     |
+----------+----------+
+----------+-----------+
| GENRE_ID | GENRE_TXT |
+----------+-----------+
|    1     | Action    |
|    2     | Adventure |
|    3     | Thriller  |
|    4     | Fantasy   |
+----------+-----------+
+----------+--------+------+-----------+
| TITLE_ID | TITLE  | YEAR | GENRE_TXT |
+----------+--------+------+-----------+
|  10001   | Matrix | 1999 |  Action   |
+----------+--------+------+-----------+
用户发送1999年、类型冒险或惊悚片的请求

如何在1个优化查询中查找所有电影

结果应为:

+----------+---------------+------+
| TITLE_ID |     TITLE     | YEAR |
+----------+---------------+------+
|  10001   | Matrix        | 1999 |
|  10002   | Walk on Water | 2004 |
+----------+---------------+------+
+----------+----------+
| TITLE_ID | GENRE_ID |
+----------+----------+
|  10001   |    1     |
|  10001   |    2     |
|  10002   |    2     |
|  10002   |    4     |
|  10001   |    3     |
+----------+----------+
+----------+-----------+
| GENRE_ID | GENRE_TXT |
+----------+-----------+
|    1     | Action    |
|    2     | Adventure |
|    3     | Thriller  |
|    4     | Fantasy   |
+----------+-----------+
+----------+--------+------+-----------+
| TITLE_ID | TITLE  | YEAR | GENRE_TXT |
+----------+--------+------+-----------+
|  10001   | Matrix | 1999 |  Action   |
+----------+--------+------+-----------+

我不在乎选择哪种类型,只在乎这部电影是用户要求的类型之一。

您可以尝试将这3个表连接在一起,然后使用
WHERE
子句限制查询,使用您对年份和电影类型的要求。下面的查询将只返回一条记录,您指定的记录是可以接受的

SELECT m.TITLE_ID, m.TITLE, m.YEAR, g.GENRE_TXT
FROM movies m
INNER JOIN movie2genre mg ON m.TITLE_ID = mg.TITLE_ID
INNER JOIN genre g ON mg.GENRE_ID = g.GENRE_ID
WHERE m.YEAR = 1999 AND g.GENRE_TXT IN ('Adventure', 'Thriller')

我会取消限制。。。OP想要所有的电影。。。仅他的样本数据将从显示的数据中仅返回1。(但对准确的查询投了赞成票)谢谢!工作得很好。我只是添加了“按m.TITLE\u ID分组”以获得电影的1个结果。@TheWiz,请查看帮助->浏览网站礼仪并将答案标记为已解决(选中答案旁边的复选标记)。让其他人知道什么是有效的,当不再需要时,其他人不必继续提供解决方案:)