(抱歉,我的英语不是很好) 你好,我正在尝试学习如何使用 MySQL 中的联结表,但我不知道该怎么做。我了解 MySQL 的基础知识,但我从未使用过“JOIN”。
在这个测试项目中,我希望能够在页面上显示给定类别的应用程序(您单击“游戏”,只有“游戏”类别中的应用程序才会显示在页面上)。我想知道 SQL 请求应该是什么样子。
第二个问题,假设一个应用程序可以适合 2 个不同的类别,我如何才能在我的数据库中为该应用程序提供 2 个不同的 Category_ID ?
这是我的数据库目前的样子:
表名称:APPS
+------------+-------------------+
| App_ID (pk)| App_Name |
+------------+-------------------+
| 1 | Weather Network |
| 2 | Is it sunny 2.0 |
| 3 | The Weather App |
| 4 | Zelda |
| 5 | Megaman |
| 6 | Doom 3 |
+------------+-------------------+
表名称:类别
+-----------------+-----------------+
| Category_ID (pk)| Category_Name |
+-----------------+-----------------+
| 1 | Games |
| 2 | Weather |
+-----------------+-----------------+
表名称:JUNCTION_APP_CATEGORY
+----------------+--------------------+
| APP_ID (pk) | Category_ID (pk) |
+----------------+--------------------+
| 1 | 2 |
| 2 | 2 |
| 3 | 2 |
| 4 | 1 |
| 5 | 1 |
| 6 | 1 |
+----------------+--------------------+
最佳答案
对于你的第一个问题,答案是
SELECT a.*, c.*
FROM APPS a, CATEGORY c, JUNCTION_APP_CATEGORY ac
WHERE a.App_ID=ac.APP_ID
AND c.Category_ID=ac.Category_ID
AND ac.Category_ID=<category_id for category "Games">
对于第二个问题,您可以使用 APP_ID
和 Categor_ID
作为表 JUNCTION_APP_CATEGORY
的主键(注意不是两个 pks,但是将两列一起用作一个 pk)。这样你就可以像这样放置数据:
+----------------+--------------------+
| APP_ID (pk) | Category_ID (pk) |
+----------------+--------------------+
| 1 | 1 | <-- APP_ID=1 belongs to both cat 1 & 2
| 1 | 2 |
| 2 | 2 |
| 3 | 2 |
| 4 | 1 |
| 5 | 1 |
| 6 | 1 |
+----------------+--------------------+
关于php - MySQL 中的连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21844599/