Last active
January 23, 2025 15:37
-
-
Save i2x/5729b2b65d20ac20369f9b94f7b71d8d to your computer and use it in GitHub Desktop.
Week_07
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- Drop the database if it already exists | |
| DROP DATABASE IF EXISTS ManufacturingDB; | |
| -- Create the database | |
| CREATE DATABASE ManufacturingDB; | |
| -- Use the database | |
| USE ManufacturingDB; | |
| -- Create the tables (using the schema provided earlier) | |
| CREATE TABLE Address ( | |
| id INT PRIMARY KEY AUTO_INCREMENT, | |
| country VARCHAR(100) NOT NULL, | |
| state VARCHAR(100), | |
| city VARCHAR(100) NOT NULL, | |
| road VARCHAR(255), | |
| zip_code VARCHAR(20) | |
| ); | |
| CREATE TABLE Manufacturer ( | |
| id INT PRIMARY KEY AUTO_INCREMENT, | |
| name VARCHAR(255) NOT NULL, | |
| website VARCHAR(255), | |
| email VARCHAR(100), | |
| tel VARCHAR(20), | |
| address_id INT, | |
| FOREIGN KEY (address_id) REFERENCES Address(id) | |
| ); | |
| CREATE TABLE Model ( | |
| id INT PRIMARY KEY AUTO_INCREMENT, | |
| name VARCHAR(255) NOT NULL, | |
| type VARCHAR(100), | |
| color VARCHAR(50), | |
| year INT, | |
| manu_id INT, | |
| FOREIGN KEY (manu_id) REFERENCES Manufacturer(id) | |
| ); | |
| CREATE TABLE Part ( | |
| id INT PRIMARY KEY AUTO_INCREMENT, | |
| name VARCHAR(255) NOT NULL, | |
| description TEXT, | |
| category VARCHAR(100), | |
| doc_link VARCHAR(255) | |
| ); | |
| CREATE TABLE Supplier ( | |
| id INT PRIMARY KEY AUTO_INCREMENT, | |
| name VARCHAR(255) NOT NULL, | |
| website VARCHAR(255), | |
| email VARCHAR(100), | |
| tel VARCHAR(20), | |
| address_id INT, | |
| FOREIGN KEY (address_id) REFERENCES Address(id) | |
| ); | |
| CREATE TABLE PartOfModel ( | |
| model_id INT, | |
| part_id INT, | |
| PRIMARY KEY (model_id, part_id), | |
| FOREIGN KEY (model_id) REFERENCES Model(id), | |
| FOREIGN KEY (part_id) REFERENCES Part(id) | |
| ); | |
| CREATE TABLE PartMadeBy ( | |
| sup_id INT, | |
| part_id INT, | |
| PRIMARY KEY (sup_id, part_id), | |
| FOREIGN KEY (sup_id) REFERENCES Supplier(id), | |
| FOREIGN KEY (part_id) REFERENCES Part(id) | |
| ); | |
| -- Insert sample data into Address table | |
| INSERT INTO Address (country, state, city, road, zip_code) VALUES | |
| ('USA', 'California', 'Los Angeles', '123 Main St', '90001'), | |
| ('Brazil', 'São Paulo', 'São Paulo', '456 Paulista Ave', '01310-000'), | |
| ('Germany', 'Bavaria', 'Munich', '789 Autobahn St', '80331'), | |
| ('Japan', 'Tokyo', 'Tokyo', '101 Ginza St', '104-0061'); | |
| -- Insert sample data into Manufacturer table | |
| INSERT INTO Manufacturer (name, website, email, tel, address_id) VALUES | |
| ('Tornad', 'www.tornad.com', '[email protected]', '+1-123-456-7890', 1), | |
| ('Hamax Power', 'www.hamaxpower.com', '[email protected]', '+49-89-1234567', 3), | |
| ('Aree Motors', 'www.areemotors.com', '[email protected]', '+55-11-987654321', 2); | |
| -- Insert sample data into Model table | |
| INSERT INTO Model (name, type, color, year, manu_id) VALUES | |
| ('Tornad X1', 'Sedan', 'Red', 2022, 1), | |
| ('Tornad X2', 'SUV', 'Blue', 2023, 1), | |
| ('Aree', 'Hatchback', 'Green', 2021, 3), | |
| ('Aree Pro', 'Sedan', 'Black', 2023, 3); | |
| -- Insert sample data into Part table | |
| INSERT INTO Part (name, description, category, doc_link) VALUES | |
| ('Battery', 'High-capacity lithium-ion battery', 'Battery', 'www.battery.com/doc'), | |
| ('Engine', 'V6 Turbocharged Engine', 'Engine', 'www.engine.com/doc'), | |
| ('Tire', 'All-season radial tire', 'Tire', 'www.tire.com/doc'), | |
| ('Brake', 'High-performance brake system', 'Brake', 'www.brake.com/doc'); | |
| -- Insert sample data into Supplier table | |
| INSERT INTO Supplier (name, website, email, tel, address_id) VALUES | |
| ('Hamax Power', 'www.hamaxpower.com', '[email protected]', '+49-89-7654321', 3), | |
| ('Brazil Parts', 'www.brazilparts.com', '[email protected]', '+55-11-1234567', 2), | |
| ('Global Tires', 'www.globaltires.com', '[email protected]', '+1-234-567-8901', 1); | |
| -- Insert sample data into PartOfModel table | |
| INSERT INTO PartOfModel (model_id, part_id) VALUES | |
| (1, 1), -- Tornad X1 uses Battery | |
| (2, 1), -- Tornad X2 uses Battery | |
| (3, 1), -- Aree uses Battery | |
| (4, 1), -- Aree Pro uses Battery | |
| (1, 2), -- Tornad X1 uses Engine | |
| (2, 2), -- Tornad X2 uses Engine | |
| (3, 3), -- Aree uses Tire | |
| (4, 3), -- Aree Pro uses Tire | |
| (3, 4), -- Aree uses Brake | |
| (4, 4); -- Aree Pro uses Brake | |
| -- Insert sample data into PartMadeBy table | |
| INSERT INTO PartMadeBy (sup_id, part_id) VALUES | |
| (1, 1), -- Hamax Power makes Battery | |
| (2, 2), -- Brazil Parts makes Engine | |
| (3, 3), -- Global Tires makes Tire | |
| (2, 4); -- Brazil Parts makes Brake | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- a) แสดงจํานวนรุ่นของรถทั้งหมด ที่ผู้ผลิตรถยนต์ (Manufacturer) ชื่อ Tornad ผลิต | |
| SELECT COUNT(*) AS NumberOfModels | |
| FROM Model | |
| JOIN Manufacturer ON Model.manu_id = Manufacturer.id | |
| WHERE Manufacturer.name = 'Tornad'; | |
| ---b) แสดงรายชื่อผู้ผลิตชิ้นส่วน (Supplier) ที่อยู่ในประเทศบราซิล ที่ผลิตชิ้นส่วนให้กับรถที่มีชื่อรุ่น (Model) ว่า Aree | |
| SELECT DISTINCT s.name AS Supplier | |
| FROM Supplier s | |
| JOIN PartMadeBy pmb ON s.id = pmb.sup_id | |
| JOIN Part p ON pmb.part_id = p.id | |
| JOIN PartOfModel pom ON p.id = pom.part_id | |
| JOIN Model m ON pom.model_id = m.id | |
| JOIN Address a ON s.address_id = a.id | |
| WHERE m.name = 'Aree' AND a.country = 'Brazil'; | |
| ---c) แสดงรายชื่อรุ่นของรถทั้งหมด ที่ใช้แบตเตอรี่ที่ผลิตโดย Hamax Power | |
| SELECT m.name AS Model | |
| FROM Model m | |
| JOIN PartOfModel pom ON m.id = pom.model_id | |
| JOIN Part p ON pom.part_id = p.id | |
| JOIN PartMadeBy pmb ON p.id = pmb.part_id | |
| JOIN Supplier s ON pmb.sup_id = s.id | |
| WHERE s.name = 'Hamax Power' AND p.category = 'Battery'; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment