Как запросить данные сводной таблицы в MySQL (отношение многие ко многим) - PullRequest
0 голосов
/ 08 апреля 2020

Я занимаюсь небольшим проектом, в котором у меня есть видеоигры, которые могут принадлежать к нескольким категориям / жанрам (видеоигры могут относиться к категориям RPG и стрелялки). Я хочу иметь возможность получить все игры, относящиеся к определенной категории c, скажем, все видеоигры RPG. Я создал 3 таблицы: видеоигры, категории, игровые категории.

 1. videogames table
 --------------------------
| id | name | price | date |
|----|------|-------|------|

 2. categories table
 ---------------
| id | category | 
|----|----------|

 3. game-category table
 -----------------------
| id_game | id_category | 
|---------|-------------|

Учитывая эти 3 таблицы и их столбцы, если я хочу получить Все игры, которые относятся к RPG категория, как мне сформулировать запрос? Я попытался выполнить несколько запросов, все похожие на приведенный ниже, но я получил ошибки.

SELECT DISTINCT videogames.name, videogames.id, Categories.name, Categories.id ИЗ видеоигр ПРИСОЕДИНЯЙТЕСЬ к игровой категории ON videogames.id = game-category.id_game ПРИСОЕДИНЯЙТЕСЬ к игровой категории ONateg.id = game-category.id_category

Есть ли какой-нибудь хороший ресурс в Интернете для полного понимания SQL Синтаксис и JOINs?

1 Ответ

0 голосов
/ 08 апреля 2020

Вы в основном на правильном пути. Вы не вносите в таблицу categories и вам нужен фильтр:

SELECT vg.name, vg.id, c.name, c.id
FROM videogames vg JOIN
     game_category gc
     ON vg.id = gc.id_game JOIN 
     categories c
     ON c.id = gc.id_category
WHERE c.name = 'RPG';

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...