Вопрос для новичка в MySQL

  • Автор темы Rouz
  • 57
  • Обновлено
  • 17, May 2024
  • #1
У меня есть 3 стола

ТАБЛИЦА №1 «пользователи»

3 столбца

Идентификатор пользователя int (11)

Расположение варчар (250)

Возраст интервал (11)

Первичный ключ (ID пользователя)

ТАБЛИЦА №2 «книги»

5 столбцов

ISBN варчар (13)

Название книги varchar(255)

Книга-автор varchar (255)

Год публикации int(10)

Издатель варчар (255)

ТАБЛИЦА №3 «Книжные рейтинги»

3 столбца

Идентификатор пользователя int (11)

ISBN варчар (13)

Книжный рейтинг int (11)

Первичный ключ (идентификатор пользователя, ISBN)

Столбец «Местоположение» varchar будет иметь формат «город, штат, страна).

Мне нужно собрать 10 лучших книг для каждой страны в отдельную таблицу.

Создать дамп SQL. Заранее благодарим вас за помощь.

Rouz


Рег
18 Jun, 2014

Тем
1

Постов
7

Баллов
17
  • 01, Jun 2024
  • #2
Вам следует переосмыслить свою структуру.

Серьезно.



Во-первых, почему в столбце местоположения есть три разных типа информации? Почему столбец местоположения не является отдельной таблицей или несколькими таблицами, в которые можно вводить все страны, все города и все штаты? Если предполагается, что это касается нескольких стран, логика также должна иметь способ уловить несколько способов написания названия города (если у вас нет выбора для всех из них), потому что люди будут писать по-разному или неправильно.

Кроме того.

int(11) для возраста? Вы ожидаете, что у вас будут пользователи возрастом более 100 миллионов лет? int(3) должно быть более чем достаточно для возраста.

Или вместо этого вы можете сохранить их дни рождения, что позволит вам обновлять возраст каждый год - возраст в бумажном виде не имеет значения после 1 года...

ТАБЛИЦА №1 «пользователи»

6 столбцов

Идентификатор пользователя int (11)

Location_city varchar(250)

Location_state varchar(250)

Location_country varchar(250)

Возраст smallint (3)

Первичный ключ (ID пользователя)

ТАБЛИЦА №2 «книги»

6 столбцов

Идентификатор (интервал 11)

ISBN варчар (13)

Название книги varchar(255)

Книга-автор varchar (255)

Год публикации int(10)

Издатель варчар (255)

Первичный ключ (ID)

ТАБЛИЦА №3 «Книжные рейтинги»

3 столбца

Идентификатор пользователя int (11)

Идентификатор int(11)

Book-rating int (11) //это, вероятно, тоже следует изменить - в зависимости от типа вашей рейтинговой системы, это, вероятно, может быть намного меньше, чем int(11)

Чтобы получить 10 лучших книг в любой стране, вам просто нужно сделать что-то вроде:

ВЫБЕРИТЕ .t1,.t2,*.t3 ИЗ Книжных рейтингов t1 СЛЕВА ПРИСОЕДИНЯЙТЕСЬ к книгам t2 ON t1.ID = t2.ID СЛЕВА ПРИСОЕДИНЯЙТЕСЬ к пользователям t3 ON t1.User-ID = t3.User-ID WHERE Location_country = 'selectec страна' СОРТИРОВАТЬ ПО Рейтингу книг DESC LIMIT 10
 

akakinache


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
Тем
49554
Комментарии
57426
Опыт
552966

Интересно