[英]How to query a pivot table data in MySQL (many to many relationship)
我正在做一个小项目,其中我的视频游戏可能属于多个类别/类型(视频游戏可以属于 RPG 和射击游戏类别)。 我希望能够获得属于特定类别的所有游戏,比如说所有 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 FROM videogames 加入游戏类别 on videogames.id = game-category.id_game 加入游戏类别 categories.id = game-category.id_category
网上有什么好的资源可以完全理解 SQL 语法和 JOIN 吗?
你基本上是在正确的道路上。 您没有引入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';
请注意表别名的使用,以便查询更易于编写和阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.