Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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 SQL-查询帮助_Mysql_Sql_Database - Fatal编程技术网

Mysql SQL-查询帮助

Mysql SQL-查询帮助,mysql,sql,database,Mysql,Sql,Database,我对SQL非常陌生,我正在从事一项任务,这项任务要求我根据IMDB数据库找到一家公司制作的电影,该公司的名称中有“电影”。 可在此处查看此数据库的图表: 这就是我正在处理的问题 SELECT t.title, t.id FROM title t, movie_link m JOIN movie_companies c ON (m.movie_id = c.movie_id) JOIN company_name n USING (id) WHERE n.name LIKE '%films%'

我对SQL非常陌生,我正在从事一项任务,这项任务要求我根据IMDB数据库找到一家公司制作的电影,该公司的名称中有“电影”。 可在此处查看此数据库的图表:

这就是我正在处理的问题

SELECT t.title, t.id
FROM title t, movie_link m
JOIN movie_companies c ON (m.movie_id = c.movie_id)
JOIN company_name n USING (id)
WHERE n.name LIKE '%films%'

似乎缺少
标题
电影链接
表之间联接的联接谓词

我建议不要在语句中混合使用“逗号”和“JOIN关键字”语法。也就是说,删除
标题
电影链接
)之间的逗号,并将其替换为关键字
加入
。如果不希望交叉连接,请添加连接谓词

另外,在连接谓词中使用语法的
对我来说有点模棱两可。我建议您明确指定要从哪些表中匹配哪些列,就像您在加入
movie\u companies
表时所做的那样

下面的查询无法运行。这个需要用适当的标识符和别名替换:

SELECT t.title
     , t.id
  FROM title           t
  JOIN movie_link      m ON m.???      = t.???
  JOIN movie_companies c ON c.movie_id = m.movie_id
  JOIN company_name    n ON n.id       = ???.???
 WHERE n.name LIKE '%films%'

你的代码看起来确实有点接近你需要的东西,但是有一些奇怪的东西。首先,这里的隐式连接
title t,movie\u link m
在这些表之间执行笛卡尔乘积。此代码应适用于:

SELECT DISTINCT t.id, t.title
FROM title t
INNER JOIN movie_companies mc
    ON t.id = mc.movie_id
INNER JOIN company_name cn
    ON mc.company_id = cn.id
WHERE cn.name LIKE '%films%'

为了得到想要的结果,您需要从该图中考虑几件事情。例如,由于不同的公司可以是同一部电影的创作者(图表允许),因此您需要使用
DISTINCT
,否则可能会得到重复的结果。

您会遇到什么错误..似乎不需要在all@Lamak你可能是对的。在后面的连接谓词中,该表中有一个对
movie\u id
的引用。如果不需要该表,则可以从查询中删除包含“movie_link”的整行,并且可以修改引用该列的连接谓词。(我可能会将查询向后写,从company_name表作为FROM子句中的第一个表开始,然后将联接添加到每个附加表中。)