-- ========================================================================= -- BÀI 05: TÌM SẢN PHẨM CÓ GIÁ CAO NHẤT TRONG TỪNG LOẠI HÀNG -- Kỹ thuật sử dụng: Subquery (Truy vấn con lấy MAX(price) theo category_id) -- ========================================================================= USE `labdb`; -- Cấu trúc bảng liên quan (Schema): CREATE TABLE IF NOT EXISTS `categories` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(100) NOT NULL, `description` VARCHAR(255) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; CREATE TABLE IF NOT EXISTS `products` ( `id` INT AUTO_INCREMENT PRIMARY KEY, `category_id` INT NOT NULL, `name` VARCHAR(150) NOT NULL, `price` DECIMAL(15, 2) NOT NULL DEFAULT 0.00, `stock` INT NOT NULL DEFAULT 0 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- Câu truy vấn chính của Bài 05 (Sử dụng Subquery): SELECT p.id AS product_id, p.name AS product_name, c.id AS category_id, c.name AS category_name, p.price, p.stock FROM products p INNER JOIN categories c ON p.category_id = c.id WHERE p.price = ( SELECT MAX(p2.price) FROM products p2 WHERE p2.category_id = p.category_id ) ORDER BY p.price DESC;