Update two tables with calculation : Update : Insert Delete Update SQL / MySQL


SQL / MySQL » Insert Delete Update » Update »

 

Update two tables with calculation



/*
mysql> select * from Orders;
+---------+--------+----------+---------------------+
| OrderID | BookID | Quantity | DateOrdered         |
+---------+--------+----------+---------------------+
|    1001 |    103 |        1 | 2004-01-12 12:30:00 |
|    1002 |    101 |        1 | 2001-02-12 12:31:00 |
|    1003 |    103 |        2 | 2002-03-12 12:34:00 |
|    1004 |    104 |        3 | 2003-04-12 12:36:00 |
|    1005 |    102 |        1 | 2004-05-12 12:41:00 |
|    1006 |    103 |        2 | 2001-06-12 12:59:00 |
|    1007 |    101 |        1 | 2002-07-12 13:01:00 |
|    1008 |    103 |        1 | 2003-08-12 13:02:00 |
|    1009 |    102 |        4 | 2004-09-12 13:22:00 |
|    1010 |    101 |        2 | 2005-11-12 13:30:00 |
|    1011 |    103 |        1 | 2006-12-12 13:32:00 |
|    1012 |    105 |        1 | 2001-02-12 13:40:00 |
|    1013 |    106 |        2 | 2002-04-12 13:44:00 |
|    1014 |    103 |        1 | 2003-06-12 14:01:00 |
|    1015 |    106 |        1 | 2005-01-12 14:05:00 |
|    1016 |    104 |        2 | 2003-11-12 14:28:00 |
|    1017 |    105 |        1 | 2002-03-12 14:31:00 |
|    1018 |    102 |        1 | 2001-05-12 14:32:00 |
|    1019 |    106 |        3 | 2003-07-12 14:49:00 |
|    1020 |    103 |        1 | 2004-01-12 14:51:00 |
+---------+--------+----------+---------------------+
20 rows in set (0.00 sec)

mysql> select * from Books;
+--------+-----------+---------+
| BookID | BookName  | InStock |
+--------+-----------+---------+
|      1 | Poet      |    1934 |
|      2 | Ohio      |    1919 |
|      3 | Angels    |    1966 |
|      4 | Black     |    1932 |
|    101 | Writing   |       9 |
|    102 | News      |      17 |
|    103 | Angels    |      23 |
|    104 | Poet      |      32 |
|    105 | Dunces    |       6 |
|    106 | Solitude  |      28 |
|    107 | Postcards |    1992 |
|    108 | The       |    1993 |
+--------+-----------+---------+
12 rows in set (0.00 sec)

mysql> UPDATE Books, Orders
    -> SET Orders.Quantity=Orders.Quantity+2,
    ->    Books.InStock=Books.InStock-2
    -> WHERE Books.BookID=Orders.BookID
    ->    AND Orders.OrderID = 1002;
Query OK, 2 rows affected (0.06 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from Orders;
+---------+--------+----------+---------------------+
| OrderID | BookID | Quantity | DateOrdered         |
+---------+--------+----------+---------------------+
|    1001 |    103 |        1 | 2004-01-12 12:30:00 |
|    1002 |    101 |        3 | 2005-10-09 08:51:30 |
|    1003 |    103 |        2 | 2002-03-12 12:34:00 |
|    1004 |    104 |        3 | 2003-04-12 12:36:00 |
|    1005 |    102 |        1 | 2004-05-12 12:41:00 |
|    1006 |    103 |        2 | 2001-06-12 12:59:00 |
|    1007 |    101 |        1 | 2002-07-12 13:01:00 |
|    1008 |    103 |        1 | 2003-08-12 13:02:00 |
|    1009 |    102 |        4 | 2004-09-12 13:22:00 |
|    1010 |    101 |        2 | 2005-11-12 13:30:00 |
|    1011 |    103 |        1 | 2006-12-12 13:32:00 |
|    1012 |    105 |        1 | 2001-02-12 13:40:00 |
|    1013 |    106 |        2 | 2002-04-12 13:44:00 |
|    1014 |    103 |        1 | 2003-06-12 14:01:00 |
|    1015 |    106 |        1 | 2005-01-12 14:05:00 |
|    1016 |    104 |        2 | 2003-11-12 14:28:00 |
|    1017 |    105 |        1 | 2002-03-12 14:31:00 |
|    1018 |    102 |        1 | 2001-05-12 14:32:00 |
|    1019 |    106 |        3 | 2003-07-12 14:49:00 |
|    1020 |    103 |        1 | 2004-01-12 14:51:00 |
+---------+--------+----------+---------------------+
20 rows in set (0.00 sec)

mysql> select * from Books;
+--------+-----------+---------+
| BookID | BookName  | InStock |
+--------+-----------+---------+
|      1 | Poet      |    1934 |
|      2 | Ohio      |    1919 |
|      3 | Angels    |    1966 |
|      4 | Black     |    1932 |
|    101 | Writing   |       7 |
|    102 | News      |      17 |
|    103 | Angels    |      23 |
|    104 | Poet      |      32 |
|    105 | Dunces    |       6 |
|    106 | Solitude  |      28 |
|    107 | Postcards |    1992 |
|    108 | The       |    1993 |
+--------+-----------+---------+
12 rows in set (0.00 sec)


*/

Drop table Books;
Drop table Orders;
       
CREATE TABLE Books
(
   BookID SMALLINT NOT NULL PRIMARY KEY,
   BookName VARCHAR(40NOT NULL,
   InStock SMALLINT NOT NULL
)
ENGINE=INNODB;


CREATE TABLE Orders
(
   OrderID SMALLINT NOT NULL PRIMARY KEY,
   BookID SMALLINT NOT NULL,
   Quantity TINYINT (40NOT NULL DEFAULT 1,
   DateOrdered TIMESTAMP,
   FOREIGN KEY (BookIDREFERENCES Books (BookID)
)
ENGINE=INNODB;


INSERT INTO Orders VALUES (10011031'2004-01-12 12:30:00'),
                          (10021011'2001-02-12 12:31:00'),
                          (10031032'2002-03-12 12:34:00'),
                          (10041043'2003-04-12 12:36:00'),
                          (10051021'2004-05-12 12:41:00'),
                          (10061032'2001-06-12 12:59:00'),
                          (10071011'2002-07-12 13:01:00'),
                          (10081031'2003-08-12 13:02:00'),
                          (10091024'2004-09-12 13:22:00'),
                          (10101012'2005-11-12 13:30:00'),
                          (10111031'2006-12-12 13:32:00'),
                          (10121051'2001-02-12 13:40:00'),
                          (10131062'2002-04-12 13:44:00'),
                          (10141031'2003-06-12 14:01:00'),
                          (10151061'2005-01-12 14:05:00'),
                          (10161042'2003-11-12 14:28:00'),
                          (10171051'2002-03-12 14:31:00'),
                          (10181021'2001-05-12 14:32:00'),
                          (10191063'2003-07-12 14:49:00'),
                          (10201031'2004-01-12 14:51:00');


INSERT INTO Books VALUES (101'Writing', 12),
                         (102'News', 17),
                         (103'Angels', 23),
                         (104'Poet', 32),
                         (105'Dunces', 6),
                         (106'Solitude', 28);



select from Orders;

select from Books;

UPDATE Books, Orders
SET Orders.Quantity=Orders.Quantity+2,
   Books.InStock=Books.InStock-2
WHERE Books.BookID=Orders.BookID
   AND Orders.OrderID = 1002;


select from Orders;

select from Books;


           
       



Leave a Comment / Note


 
Verification is used to prevent unwanted posts (spam). .

Follow Navioo On Twitter

SQL / MySQL

 Navioo Insert Delete Update
» Update