You are on page 1of 6

MySQL – Bài thực hành số 2

Nội dung: Truy vấn CSDL


Yêu cầu:

1. Đưa ra thô ng tin khá ch hàng và số lượ ng đĩa đang đượ c thuê, chưa trả tạ i
cử a hà ng có mã là 2 trong thá ng 2, nă m 2006.
2. Đưa ra danh sá ch cá c film trong bả ng film_text mà trong mô tả
(description) xuấ t hiện đồ ng thờ i hai từ là ‘drama’ và ‘teacher’
a. Sử dụ ng từ khó a LIKE
b. Sử dụ ng FULL TEXT SEARCH (FTS)
3. Sử dụ ng FTS tìm kiếm film mà mô tả chứ a cụ m từ “Mad Scientist”
4. Đưa ra tên 10 bộ phim đượ c thuê nhiều nhấ t trong thá ng 2/2006, sử dụ ng
hai cá ch: truy vấn con và cá ch nố i bả ng.
5. Đưa ra danh sá ch cử a hà ng và tổ ng số đĩa film đượ c thuê củ a mỗ i cử a hà ng
trong thá ng 2/2006, danh sá ch sắ p xếp theo thứ tự số lượ ng giả m dầ n
6. Đưa ra số lượ ng cá c đĩa phim có tiêu đề ‘AGENT TRUMAN’ cò n trong
store_id là 1
Câu 1

SELECT customer.*, t1.soLuong

FROM customer,

SELECT rental.customer_id as id, COUNT(*) as soLuong

FROM rental

WHERE extract(YEAR_MONTH FROM rental.return_date) > 200602 OR


rental.return_date IS NULL

GROUP BY rental.customer_id

) as t1

WHERE customer.customer_id = t1.id AND customer.store_id = 2

Câu 2

2.a
SELECT film.*

FROM film

JOIN film_text ON film_text.film_id = film.film_id

WHERE film_text.description LIKE "%drama%" AND film_text.description LIKE


"%teacher%"

2.b

ALTER TABLE film_text ADD FULLTEXT(description)

SELECT film.title, film_text.description

FROM film

JOIN film_text

ON film_text.film_id = film.film_id

WHERE MATCH (film_text.description) AGAINST ('drama') AND MATCH


(film_text.description) AGAINST ('teacher')

Câu 3
ALTER TABLE film ADD FULLTEXT(description)

SELECT *

FROM film

WHERE MATCH (film.description) AGAINST ("Mad Scientist") > 0

Câu 4

Cá ch 1: Nố i bả ng

SELECT film_text.title, COUNT(*) as SoLuong

FROM film

JOIN film_text

ON film_text.film_id = film.film_id

JOIN inventory

ON inventory.film_id = film.film_id

JOIN rental

ON rental.inventory_id = inventory.inventory_id

WHERE EXTRACT(YEAR_MONTH FROM rental.rental_date ) = 200602

GROUP BY film.film_id

ORDER by SoLuong DESC, film.film_id ASC LIMIT 10

Cá ch 2: Truy vấn con:

SELECT film_text.title, t1.SoLuong


FROM film_text,

SELECT inventory.film_id AS id, COUNT(*) AS SoLuong

FROM inventory, rental

WHERE inventory.inventory_id = rental.inventory_id

AND EXTRACT(YEAR_MONTH FROM rental.rental_date) = 200602

GROUP BY inventory.film_id

) AS t1

WHERE t1.id = film_text.film_id

ORDER BY SoLuong DESC , film_text.film_id ASC LIMIT 10

Câu 5
SELECT staff.store_id, COUNT(*) as SoLuong
FROM rental

JOIN staff

ON staff.staff_id = rental.staff_id

WHERE EXTRACT(YEAR_MONTH FROM rental.rental_date) = 200505

GROUP BY staff.store_id

ORDER BY SoLuong DESC

Câu 6
SELECT COUNT(*) as SoLuong

FROM inventory

JOIN film_text

ON film_text.film_id = inventory.film_id

WHERE film_text.title = "AGENT TRUMAN" AND inventory.store_id = 1

GROUP BY inventory.store_id

You might also like