您好我正在尝试使用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
答案 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进行了查询,并收到了很多结果。是否有可能由于某种原因在您的数据库副本中清空了一个表?