Mysql 将每个国家的前10本书装入单独的表格。。。?
我有三张桌子Mysql 将每个国家的前10本书装入单独的表格。。。?,mysql,sql,Mysql,Sql,我有三张桌子 TABLE #1 "users" 3 columns User-ID int (11) Location varchar (250) Age int (11) Primary-key (User-ID) TABLE #2 "books" 5 columns ISBN varchar (13) Book-title varchar(255) Book-author varchar (255) Year-of-publication int(10) Publisher varc
TABLE #1 "users"
3 columns
User-ID int (11)
Location varchar (250)
Age int (11)
Primary-key (User-ID)
TABLE #2 "books"
5 columns
ISBN varchar (13)
Book-title varchar(255)
Book-author varchar (255)
Year-of-publication int(10)
Publisher varchar (255)
TABLE #3 "Book-raitings"
3 columns
User-ID int (11)
ISBN varchar (13)
Book-rating int (11)
Primary-key (user-id, ISBN)
位置列varchar
的格式为(城市、州、国家
)
我必须将每个国家的前10本书编入一个单独的表格。生成SQL转储
提前感谢您的帮助。一些初步建议:
'Book-ratings'
'Book-ratings'
而不是:Book-ratings.Book-ratings
减号是MySql中的一个运算符CREATE TABLE books_by_country
SELECT
`Book-ratings`.`Book-rating`,
`books`.`Book-title`,
REPLACE(`users`.`Location`,CONCAT(SUBSTRING_INDEX(`users`.`Location`, ',', 2),', '),'') as Country
FROM `Book-ratings`
LEFT JOIN `books` ON `books`.`ISBN` = `Book-ratings`.`ISBN`
LEFT JOIN `users` ON `Book-ratings`.`User-ID` = `Book-ratings`.`User-ID`;
SELECT
`books_by_country`.`Country`,
`books_by_country`.`Book-title`,
SUM(`books_by_country`.`Book-rating`) as Book_ranking
FROM `Test`.`books_by_country`
WHERE `books_by_country`.`Country`= 'USA'
Group BY `books_by_country`.`Country`,`books_by_country`.`Book-title`
ORDER BY Book_ranking DESC
LIMIT 10;
从中,您可以通过以下方式为每个国家挑选前10本书:
CREATE TABLE books_by_country
SELECT
`Book-ratings`.`Book-rating`,
`books`.`Book-title`,
REPLACE(`users`.`Location`,CONCAT(SUBSTRING_INDEX(`users`.`Location`, ',', 2),', '),'') as Country
FROM `Book-ratings`
LEFT JOIN `books` ON `books`.`ISBN` = `Book-ratings`.`ISBN`
LEFT JOIN `users` ON `Book-ratings`.`User-ID` = `Book-ratings`.`User-ID`;
SELECT
`books_by_country`.`Country`,
`books_by_country`.`Book-title`,
SUM(`books_by_country`.`Book-rating`) as Book_ranking
FROM `Test`.`books_by_country`
WHERE `books_by_country`.`Country`= 'USA'
Group BY `books_by_country`.`Country`,`books_by_country`.`Book-title`
ORDER BY Book_ranking DESC
LIMIT 10;
你能把连字符改成下划线吗。我一直在想你在试着减法。说到家庭作业,我们通常需要更多的努力。谢谢你,我确实注意到了后面的连字符。这实际上是我在网上看到的一个例子,我想试着去理解非硬件。我感谢你的快速回答。白羽,非常感谢你的帮助。我确实改变了我的一个可能的解决方案——位置字符串,将州、市、国分开——这样做要容易得多,但如果不将它们分开,我想不出怎么做。我真的很感谢你的帮助。罗斯玛丽,如果你在答案上打勾或投票的话,我会非常感激的。