2016-03-13 3 views
-2

У меня есть 3 таблицыЗагрузите 10 книг по каждой стране в отдельный стол ...?

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 будет иметь формат (city, state, country)

Я должен генерировать 10 лучших книг в каждой стране в отдельную таблицу. Создайте SQL-дамп.

Благодарим за помощь.

+0

Можете ли вы изменить дефисы на символы подчеркивания. Я продолжаю думать, что вы пытаетесь вычесть материал. И когда дело доходит до домашней работы, нам обычно требуется немного больше усилий. – Strawberry

+0

Спасибо, что я заметил, что потомки. Это на самом деле пример, который я видел в Интернете, я хотел попытаться понять не hw. Я ценю быстрые ответы –

ответ

0

Некоторые первоначальные рекомендации:

  1. Не используйте - в MySql имени переменной. Это заставит использовать этот синтаксис: 'Book-ratings'. 'Book-rating' вместо: Book_ratings.Book_rating Знак минус является оператором в MySql.
  2. Жаль, что у вас есть местоположение как последовательность значений, разделенных запятой. Было бы намного лучше иметь 3 поля: город, штат, страна. Эта силовая комплексная обработка струн и является источником ограничений.

Вы можете создать таблицу со страной так:

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`; 

Из этого вы можете выбрать 10 лучших книг для каждой страны этот путь:

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; 

С уважением

+0

Белое перо, спасибо вам за то, что помогли. я изменил одно из своих возможных решений: строка местоположения, в которой было состояние, город, страна, была намного проще, но я не мог понять, как это сделать, не разделяя их. Я очень ценю вашу помощь. –

+0

Розмари, было бы очень мило, если бы вы пометили или проголосовали за ответ. –

Смежные вопросы