Determine how many books have been ordered for authors who have more than one book listed in the Books table.
mysql>
mysql>
mysql> CREATE TABLE Books
-> (
-> BookID SMALLINT NOT NULL PRIMARY KEY,
-> BookTitle VARCHAR(60) NOT NULL,
-> Copyright YEAR NOT NULL
-> )
-> ENGINE=INNODB;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> INSERT INTO Books VALUES
-> (12786, 'Notebook', 1934),
-> (13331, 'C++', 1919),
-> (14356, 'Opera', 1966),
-> (15729, 'Sql Server', 1932),
-> (16284, 'C', 1996),
-> (17695, 'Pascal', 1980),
-> (19264, 'Postcards', 1992),
-> (19354, 'Oracle', 1993);
Query OK, 8 rows affected (0.00 sec)
Records: 8 Duplicates: 0 Warnings: 0
mysql>
mysql>
mysql> CREATE TABLE Authors
-> (
-> AuthID SMALLINT NOT NULL PRIMARY KEY,
-> AuthFN VARCHAR(20),
-> AuthMN VARCHAR(20),
-> AuthLN VARCHAR(20)
-> )
-> ENGINE=INNODB;
Query OK, 0 rows affected (0.00 sec)
mysql>
mysql> INSERT INTO Authors VALUES
-> (1006, 'Hunter', 'S.', 'Thompson'),
-> (1007, 'Joyce', 'Carol', 'Oates'),
-> (1008, 'Black', NULL, 'Elk'),
-> (1009, 'Rainer', 'Maria', 'Rilke'),
-> (1010, 'John', 'Kennedy', 'Toole'),
-> (1011, 'John', 'G.', 'Neihardt'),
-> (1012, 'Annie', NULL, 'Proulx'),
-> (1013, 'Alan', NULL, 'Watts'),
-> (1014, 'Nelson', NULL, 'Algren');
Query OK, 9 rows affected (0.00 sec)
Records: 9 Duplicates: 0 Warnings: 0
mysql>
mysql>
mysql> CREATE TABLE AuthorBook
-> (
-> BookID SMALLINT NOT NULL,
-> AuthID SMALLINT NOT NULL,
-> PRIMARY KEY (AuthID, BookID)
-> )
-> ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql> INSERT INTO AuthorBook VALUES
-> (1006, 14356),
-> (1008, 15729),
-> (1009, 12786),
-> (1010, 17695),
-> (1011, 15729),
-> (1012, 19264),
-> (1012, 19354),
-> (1014, 16284);
Query OK, 8 rows affected (0.00 sec)
Records: 8 Duplicates: 0 Warnings: 0
mysql>
mysql>
mysql>
mysql> CREATE TABLE BookOrders
-> (
-> OrderID SMALLINT NOT NULL,
-> BookID SMALLINT NOT NULL,
-> Quantity SMALLINT NOT NULL,
-> PRIMARY KEY (OrderID, BookID),
-> FOREIGN KEY (BookID) REFERENCES Books (BookID)
-> )
-> ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
mysql>
mysql>
mysql> INSERT INTO BookOrders VALUES
-> (101, 13331, 1),
-> (101, 12786, 1),
-> (101, 16284, 2),
-> (102, 19354, 1),
-> (102, 15729, 3),
-> (103, 12786, 2), (103, 19264, 1), (103, 13331, 1),
-> (103, 14356, 2), (104, 19354, 1), (105, 15729, 1), (105, 14356, 2),
-> (106, 16284, 2), (106, 13331, 1), (107, 12786, 3), (108, 19354, 1),
-> (108, 16284, 4), (109, 15729, 1), (110, 13331, 2), (110, 12786, 2),
-> (110, 14356, 2), (111, 14356, 2);
Query OK, 22 rows affected (0.00 sec)
Records: 22 Duplicates: 0 Warnings: 0
mysql>
mysql>
mysql> SELECT BookID, SUM(Quantity) AS Total
-> FROM BookOrders
-> GROUP BY BookID
-> HAVING BookID IN
-> (SELECT BookID FROM AuthorBook WHERE AuthID IN
-> (
-> SELECT AuthID FROM AuthorBook
-> GROUP BY AuthID
-> HAVING COUNT(*)>1
-> )
-> );
Empty set (0.00 sec)
mysql>
mysql>
mysql> drop table BookOrders;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table AuthorBook;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table Books;
Query OK, 0 rows affected (0.00 sec)
mysql> drop table Authors;
Query OK, 0 rows affected (0.00 sec)
mysql>
Related examples in the same category
1. | Order result wiht ORDER | | |
2. | Use ORDER BY to list | | |
3. | Use two ORDER BY fields | | |
4. | Sorting Rows | | |
5. | Default sort order is ascending | | |
6. | To sort in reverse (descending) order | | |
7. | Sort on multiple columns | | |
8. | Sort columns in different directions | | |
9. | Order decending | | |
10. | Another decendingly | | |
11. | Order BY and Limit | | |
12. | Order row in select clause | | |
13. | Order two columns with different orders | | |
14. | Narrow down data with condition and order it | | |
15. | Simple ORDER by | | |
16. | Sorting Data | | |
17. | Use order by to sort the result | | |
18. | Indicate of ascend | | |
19. | Order by index | | |
20. | ORDER BY RAND | | |
21. | Search string with order | | |
22. | The lack of case sensitivity also applies to relative ordering comparisons: | | |
23. | Refer to the alias in the ORDER BY clause | | |
24. | Columns specified by positions or by aliases can be sorted in either ascending or descending order | | |
25. | Putting the expression directly in the ORDER BY clause: | | |
26. | To achieve the desired output order, display the string, but use the actual numeric size for sorting | | |
27. | Display the composite names, but refer to the constituent values in the ORDER BY clause: | | |
28. | To sort those records in calendar order, use the birthmonth and birthday columns. | | |
29. | To sort by product category, extract the category value and use it in the ORDER BY clause | | |
30. | To use the substrings for sorting, use the appropriate expressions in the ORDER BY clause. | | |
31. | Sorting Hostnames in Domain Order | | |
32. | Sorting Dotted-Quad IP Values in Numeric Order | | |
33. | Floating Specific Values to the Head or Tail of the Sort Order | | |
34. | Sorting in User-Defined Orders | | |
35. | Sort the column by the order in which colors occur in the rainbow. | | |
36. | To make the lexical ordering correspond to the numeric ordering, | | |
37. | Controlling Summary Display Order | | |
38. | Sort drivers according to who drove the most days or miles, add the appropriate ORDER BY clause | | |
39. | Order by sum result | | |
40. | To sort the result set as a whole, add an ORDER BY clause after the final SELECT statement. | | |
41. | Enclose a given SELECT (including its ORDER BY clause) within parentheses | | |
42. | The expressions display state names in lexical order within each row | | |
43. | Delete from the Orders table any order for the book title Where I'm Calling From. | | |
44. | SELECT statement includes an ORDER BY clause that sorts the result set according to two columns | | |
45. | The Order in Which MySQL Processes Conditions | | |
46. | Return the third, fourth, and fifth records sorted in descending order on the commission field? | | |
47. | Explicit evaluation order | | |
48. | Display order number, quantity, item name, vendor and total order value of order number 2805 | | |
49. | Display all products - including those with no orders | | |
50. | Get the order number and number of items ordered where the color is not Pink and the number of items ordered i | | |
51. | Get players whose combination of name and initials comes before player 6 in alphabetical order. | | |
52. | Order by char type | | |
53. | order by sub string | | |
54. | Order by calculated value | | |
55. | Order by alias name | | |
56. | Order by one column descending and another one ascending | | |
57. | Order then choose the first rows | | |
58. | Refer to Sort Columns | | |
59. | Sorting Expression Results | | |
60. | Sort the results using the underlying column values rather than the displayed composite values | | |
61. | Convert the output column and sort that-but doing so affects the displayed values, possibly in an undesirable | | |
62. | To sort by country code, use the rightmost two characters of the id values | | |
63. | Sorting hostname values correctly in right-to-left fashion: | | |
64. | Sort by position | | |
65. | Sort direction | | |
66. | display all data in "hers" and "his" sorted by id | | |
67. | Sorting Subsets of a Table | | |
68. | Displaying One Set of Values While Sorting by Another | | |