繁体   English   中英

如何查询MySQL中的pivot表数据(多对多关系)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM