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

时间:2018-02-13 00:20:52

标签: 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_category fc 
    ON c.category_id = fc.category_id 
  JOIN sakila.film f 
    ON f.film_id = fc.film_id

2 个答案:

答案 0 :(得分:0)

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

如果三个表中的任何一个为空,则查询将返回零行,即包含零行。如果没有"匹配"的行,例如,如果category_id中的film_category列的值为NULL或者是不是&的值,则查询也将返回零行。 #39; t匹配category_id的{​​{1}}列中的值。

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

category

如果所有表都包含行,则检查是否有任何行不匹配。例如:

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 列。

答案 1 :(得分:0)

@ spencer7593的答案非常好,并且可以作为示例调查JOIN可能出了什么问题。

针对您的情况,我对Sakila DB进行了查询,并收到了很多结果。是否有可能由于某种原因在您的数据库副本中清空了一个表?