· 8 years ago · Jun 04, 2018, 12:40 PM
1CREATE TABLE Boat(
2 boatNumber INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
3 name VARCHAR(255),
4 owner VARCHAR(255),
5 nrOfBookings INT
6 FOREIGN KEY (customerID) REFERENCES Customers(customerID),
7);
8
9INSERT INTO Boat (name, owner, nrOfBookings) VALUES
10 ('Green Bean', 'Ronja Rövardotter', 2),
11 ('Segla Hem', 'Farbror Blå', 1);
12
13#2 en inner join kommer bara ge de båtarna som har en reservation
14SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id;
15
16#3 INNER JOIN ger alla berths som har blivit reserverade och sedan tar jag current date - duration för att få fram den start date som senaste bokningen kan vara gjord för att vara färdig.
17SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE x <= y;
18
19#4 Välj bara de reservationer som börjar idag eller senare för att se uppkommande.
20DROP VIEW IF EXISTS upcomingReservations;
21CREATE VIEW upcomingReservations AS
22 SELECT DISTINCT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id WHERE x >= y;
23
24#5 Uppdatera efter insert i reservation för varje rad som insertas
25DROP TRIGGER IF EXISTS onReservationUpdate;
26DELIMITER //
27CREATE TRIGGER name AFTER INSERT ON Table1 FOR EACH ROW
28 BEGIN
29 UPDATE Table2 SET Table2.nrOfBookings = Table2.nrOfBookings + 1 WHERE Table2.boatNumber = NEW.boatNumber;
30 end //
31DELIMITER ;
32
33SELECT boatNumber, nrOfBookings FROM Boat;
34INSERT INTO Reservation (resNumber, boatNumber, berthNumber, startDate, duration) VALUES
35 (5, 1, 2, '2018-08-08', 4),
36 (6, 2, 2, '2018-08-20', 2);
37SELECT boatNumber, nrOfBookings FROM Boat;
38
39#6
40# Lägga till i stock
41DROP PROCEDURE addStock;
42DELIMITER //
43CREATE PROCEDURE addStock(IN addAmount BIGINT, IN productIdIn BIGINT)
44 BEGIN
45 UPDATE Products SET quantity = addAmount + quantity WHERE productID = productIdIn;
46 END //
47DELIMITER ;