【381天】我愛刷題系列140(2018.02.21)

@(一隻心中無碼的程序員)專欄程序員

叨叨兩句

  1. ~

SQL習題035

1

題目描述
film表
字段 說明
film_id 電影id
title 電影名稱
description 電影描述信息code

CREATE TABLE IF NOT EXISTS film (
film_id smallint(5) NOT NULL DEFAULT '0',
title varchar(255) NOT NULL,
description text,
PRIMARY KEY (film_id));ip

category表
字段 說明
category_id 電影分類id
name 電影分類名稱
last_update 電影分類最後更新時間it

CREATE TABLE category (
category_id tinyint(3) NOT NULL ,
name varchar(25) NOT NULL, last_update timestamp,
PRIMARY KEY ( category_id ));io

film_category表
字段 說明
film_id 電影id
category_id 電影分類id
last_update 電影id和分類id對應關係的最後更新時間ast

CREATE TABLE film_category (
film_id smallint(5) NOT NULL,
category_id tinyint(3) NOT NULL, last_update timestamp);date

使用join查詢方式找出沒有分類的電影id以及名稱程序

解題思路是運用 LEFT JOIN 鏈接兩表,用 IS NULL 語句限定條件:
一、用 LEFT JOIN 鏈接 film 和 film_category,限定條件爲 f.film_id = fc.film_id,即鏈接電影id和電影分類id,若是電影沒有分類,則電影分類id顯示null
二、再用 WHERE 來限定條件 fc.category_id IS NULL 選出沒分類的電影
/** 注意:最後一句若寫成 ON f.film_id = fc.film_id AND fc.category_id IS NULL,則意義變成左鏈接兩表 film_id 相同的記錄,且 fc.category 的值爲 null,因爲 fc.category的值不爲null,即(f.film_id = fc.film_id AND fc.category_id IS NULL)恆爲FALSE,因此左鏈接後只顯示film表的數據,而 film_category 表的數據全爲 null**/

SELECT f.film_id, f.title FROM film f LEFT JOIN film_category fc
ON f.film_id = fc.film_id WHERE fc.category_id IS NULL
相關文章
相關標籤/搜索