|
| 1 | +<?xml version="1.0" encoding="UTF-8"?><sqlb_project><db path="C:/Users/Phone Thiri Yadana/Documents/02.Studies/SQL/exercises/MySQL Projects/SQL Code Challenges - Lynda/At the Library/library.db" readonly="0" foreign_keys="1" case_sensitive_like="0" temp_store="0" wal_autocheckpoint="1000" synchronous="2"/><attached/><window><main_tabs open="structure browser pragmas query" current="0"/></window><tab_structure><column_width id="0" width="300"/><column_width id="1" width="0"/><column_width id="2" width="100"/><column_width id="3" width="938"/><column_width id="4" width="0"/><expanded_item id="0" parent="1"/><expanded_item id="1" parent="1"/><expanded_item id="2" parent="1"/><expanded_item id="3" parent="1"/></tab_structure><tab_browse><current_table name="4,5:mainBooks"/><default_encoding codec=""/><browse_table_settings><table schema="main" name="Books" show_row_id="0" encoding="" plot_x_axis="" unlock_view_pk="_rowid_"><sort><column index="1" mode="1"/></sort><column_widths><column index="1" value="53"/><column index="2" value="300"/><column index="3" value="198"/><column index="4" value="69"/><column index="5" value="77"/></column_widths><filter_values/><conditional_formats/><row_id_formats/><display_formats/><hidden_columns/><plot_y_axes/><global_filter/></table><table schema="main" name="Loans" show_row_id="0" encoding="" plot_x_axis="" unlock_view_pk="_rowid_"><sort><column index="1" mode="1"/></sort><column_widths><column index="1" value="53"/><column index="2" value="53"/><column index="3" value="66"/><column index="4" value="73"/><column index="5" value="73"/></column_widths><filter_values/><conditional_formats/><row_id_formats/><display_formats/><hidden_columns/><plot_y_axes/><global_filter/></table></browse_table_settings></tab_browse><tab_sql><sql name="LibraryChallenges.sql">/******************* In the Library *********************/ |
| 2 | +
|
| 3 | +/*******************************************************/ |
| 4 | +/* find the number of availalbe copies of Dracula */ |
| 5 | +/*******************************************************/ |
| 6 | +
|
| 7 | +/* check total copies of the book */ |
| 8 | +SELECT *, COUNT(BookID) AS TotalCopies |
| 9 | +FROM Books |
| 10 | +WHERE Title LIKE '%Dracula%'; |
| 11 | +
|
| 12 | +/* current total loans of the book */ |
| 13 | +SELECT *, COUNT(LoanID) AS TotalLoans |
| 14 | +FROM Loans |
| 15 | +WHERE BookID IN ( |
| 16 | + SELECT BookID FROM Books WHERE Title LIKE '%Dracula%' |
| 17 | +) |
| 18 | +AND ReturnedDate IS NULL; |
| 19 | +
|
| 20 | +/* total available book */ |
| 21 | +
|
| 22 | +SELECT |
| 23 | + (SELECT COUNT(BookID) AS TotalCopies |
| 24 | + FROM Books |
| 25 | + WHERE Title LIKE '%Dracula%') |
| 26 | + - |
| 27 | + (SELECT COUNT(LoanID) AS TotalLoans |
| 28 | + FROM Loans |
| 29 | + WHERE BookID IN ( |
| 30 | + SELECT BookID FROM Books WHERE Title LIKE '%Dracula%' |
| 31 | + ) |
| 32 | + AND ReturnedDate IS NULL) |
| 33 | +AS AvailableBooks; |
| 34 | +
|
| 35 | +
|
| 36 | +/*******************************************************/ |
| 37 | +/* Add new books to the library */ |
| 38 | +/*******************************************************/ |
| 39 | +
|
| 40 | +INSERT INTO Books(Title, Author, Published, Barcode) |
| 41 | +VALUES |
| 42 | +('Dracula', 'Bram Stoker', 1897, 4819277482), |
| 43 | +('Gulliver''s Travel', 'Johnathan Swift',1729,4899254401); |
| 44 | +
|
| 45 | +
|
| 46 | +/*******************************************************/ |
| 47 | +/* Check out Books */ |
| 48 | +/*******************************************************/ |
| 49 | +
|
| 50 | +INSERT INTO Loans(BookID, PatronID, LoanDate, DueDate) |
| 51 | +VALUES |
| 52 | +( |
| 53 | + (SELECT BookID FROM Books WHERE Barcode = 4043822646), |
| 54 | + (SELECT PatronID FROM Patrons WHERE Email LIKE ' [email protected]'), |
| 55 | + '2020-08-25', |
| 56 | + '2020-09-08' |
| 57 | +), |
| 58 | +( |
| 59 | + (SELECT BookID FROM Books WHERE Barcode = 2855934983), |
| 60 | + (SELECT PatronID FROM Patrons WHERE Email LIKE ' [email protected]'), |
| 61 | + '2020-08-25', |
| 62 | + '2020-09-08' |
| 63 | +); |
| 64 | +
|
| 65 | +SELECT * FROM Loans |
| 66 | +ORDER BY LoanID DESC |
| 67 | +LIMIT 5; |
| 68 | +
|
| 69 | +
|
| 70 | +/********************************************************/ |
| 71 | +/* Check books for Due back */ |
| 72 | +/* generate a report of books due back on July 13, 2020 */ |
| 73 | +/* with patron contact information */ |
| 74 | +/********************************************************/ |
| 75 | +
|
| 76 | +SELECT p.FirstName, p.LastName, p.Email, b.Title, l.LoanDate, l.DueDate |
| 77 | +FROM Loans l |
| 78 | +JOIN Books b ON l.BookID = b.BookID |
| 79 | +JOIN Patrons p ON l.PatronID = p.PatronID |
| 80 | +WHERE l.DueDate = '2020-07-13' |
| 81 | +AND ReturnedDate IS NULL; |
| 82 | +
|
| 83 | +
|
| 84 | +/*******************************************************/ |
| 85 | +/* Return books to the library */ |
| 86 | +/*******************************************************/ |
| 87 | +SELECT * FROM Loans |
| 88 | +WHERE BookID IN (SELECT BookID FROM Books |
| 89 | +WHERE Barcode = 6435968624) |
| 90 | +AND ReturnedDate IS NULL; |
| 91 | +
|
| 92 | +UPDATE Loans |
| 93 | +SET ReturnedDate = '2020-07-05' |
| 94 | +WHERE BookID IN |
| 95 | + (SELECT BookID FROM Books WHERE Barcode = 6435968624) |
| 96 | +AND ReturnedDate IS NULL; |
| 97 | +
|
| 98 | +
|
| 99 | +/*******************************************************/ |
| 100 | +/* Encourage Patrons to check out books */ |
| 101 | +/* generate a report of showing 10 patrons who have |
| 102 | +checked out the fewest books. */ |
| 103 | +/*******************************************************/ |
| 104 | +SELECT p.FirstName, p.LastName, p.Email, COUNT(p.PatronID) AS Total_Loans |
| 105 | +FROM Patrons p |
| 106 | +LEFT JOIN Loans l |
| 107 | +ON p.PatronID = l.PatronID |
| 108 | +GROUP BY p.PatronID |
| 109 | +ORDER BY 4 ASC |
| 110 | +LIMIT 10; |
| 111 | +
|
| 112 | +
|
| 113 | +/*******************************************************/ |
| 114 | +/* Find books to feature for an event |
| 115 | + create a list of books from 1890s that are |
| 116 | + currently available */ |
| 117 | +/*******************************************************/ |
| 118 | +SELECT b.BookID, b.Title, b.Author, b.Published, COUNT(b.BookID) AS TotalAvailableBooks |
| 119 | +FROM Books b |
| 120 | +LEFT JOIN Loans l |
| 121 | +ON b.BookID = l.BookID |
| 122 | +WHERE ReturnedDate IS NOT NULL |
| 123 | +AND b.Published BETWEEN 1890 AND 1899 |
| 124 | +GROUP BY b.BookID |
| 125 | +ORDER BY b.BookID; |
| 126 | +
|
| 127 | +
|
| 128 | +/*******************************************************/ |
| 129 | +/* Book Statistics |
| 130 | +/* create a report to show how many books were |
| 131 | +published each year. */ |
| 132 | +/*******************************************************/ |
| 133 | +SELECT Published, COUNT(DISTINCT(Title)) AS TotalNumberOfPublishedBooks |
| 134 | +FROM Books |
| 135 | +GROUP BY Published |
| 136 | +ORDER BY TotalNumberOfPublishedBooks DESC; |
| 137 | +
|
| 138 | +
|
| 139 | +/*************************************************************/ |
| 140 | +/* Book Statistics */ |
| 141 | +/* create a report to show 5 most popular Books to check out */ |
| 142 | +/*************************************************************/ |
| 143 | +SELECT b.Title, b.Author, b.Published, COUNT(b.Title) AS TotalTimesOfLoans |
| 144 | +FROM Books b |
| 145 | +JOIN Loans l |
| 146 | +ON b.BookID = l.BookID |
| 147 | +GROUP BY b.Title |
| 148 | +ORDER BY 4 DESC |
| 149 | +LIMIT 5; |
| 150 | +</sql><current_tab id="0"/></tab_sql></sqlb_project> |
|
0 commit comments