使用sakila数据库连接MySql中的三个表

使用sakila数据库连接MySql中的三个表,mysql,mysql-workbench,Mysql,Mysql Workbench,您好,我正在尝试使用sakila数据库连接三个表。它返回我提供的列名,但不返回任何信息。任何提示都将不胜感激 USE sakila; SELECT c.name 'Category Name' , f.title 'Film Title' , f.description 'Film Description' , f.release_year 'Release Year' FROM sakila.category c JOIN sakila.film_cat

您好,我正在尝试使用sakila数据库连接三个表。它返回我提供的列名,但不返回任何信息。任何提示都将不胜感激

USE sakila;

SELECT c.name 'Category Name'
     , f.title 'Film Title'
     , f.description 'Film Description'
     , f.release_year 'Release Year'
  FROM sakila.category c
  JOIN sakila.film_category fc 
    ON c.category_id = fc.category_id 
  JOIN sakila.film f 
    ON f.film_id = fc.film_id

对观察到的行为最可能的解释是,数据库中没有满足条件的行

如果三个表中的任何一个为空,即包含零行,则查询将返回零行。如果没有“匹配”的行,例如,如果
film\u category
中的
category\u id
列的值为空或与
category
category\u id
列中的值不匹配,则查询也将返回零行


首先,检查是否有任何表为空:

SELECT COUNT(1) FROM film ;
SELECT COUNT(1) FROM film_category ;
SELECT COUNT(1) FROM category ;
如果所有表都包含行,接下来检查是否有不匹配的行。例如:

SELECT fc.category_id  
  FROM film_category fc
  LEFT
  JOIN category c
    ON c.category_id = fc.category_id
 WHERE fc.category_id IS NULL

类似地,对于
film\u id
专栏。

@spencer7593的答案非常好,可以作为调查连接可能出现问题的示例


针对您的情况,我对您的查询进行了分析,并收到了大量结果。在数据库副本中,是否有一个表因某种原因被清空?

如果要命名列,则应使用
作为
关键字。虽然是可选的,但我敢肯定它在没有空格的情况下错误地解释了列名。@obsidyanage why?OP,您的查询很好,不可能返回没有行的列。mysql不是这样工作的。