在获取期间和创建期间生成链接

时间:2017-09-14 16:42:56

标签: php mysql

假设我是这样的表:

分类

| cat_id | cat_name |
|--------|----------|
| 1      | tvs      |
| 2      | phones   |
| 3      | tablets  |

然后我有:

产品:

| product_id | product_name    | product_category |
|------------|-----------------|------------------|
| 1          | tv sony         | 1                |
| 2          | tv samsung      | 1                |
| 3          | phone htc       | 2                |
| 4          | phone motorolla | 2                |
| 5          | tablet apple    | 3                |

有人进入 index.php ,我从数据库中获得10个随机产品。为了创建链接,我必须再次获取数据库(以获取类别的名称),然后我可以执行mysite.com/phones/4之类的操作(这将是phone motorolla的链接)。

当然,10在服务器上不会太难,但它仍然是对数据库的另一次提取。

另一种选择是在产品创建期间获取类别名称,并在那里生成链接,例如:

| product_id | product_name    | product_category | product_link |
|------------|-----------------|------------------|--------------|
| 1          | tv sony         | 1                | tvs/1        |
| 2          | tv samsung      | 1                | tvs/2        |
| 3          | phone htc       | 2                | phones/3     |
| 4          | phone motorolla | 2                | phones/4     |
| 5          | tablet apple    | 3                | tablets/5    |

但是,类别的名称可能会更改,因此链接将不再起作用。所以我该怎么做?还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

Alright Nick所以在SQL中你有一些非常强大的东西叫做JOIN。 SQL中的连接允许您基于键合并来自不同表的列。通常,密钥是主键或外键。

在您的情况下,您似乎拥有主键: cat_id product_id 作为外键,你有: product_category 根据您的数据库架构,您可以像这样查询表:

SELECT p.product_id, p.product_name, c.cat_name
FROM PRODUCTS p INNER JOIN CATEGORIES c 
ON p.product_category = c.cat_id

使用此查询,您只需对数据库进行一次查询即可检索product_id,product_name和cat_name。

以下是有关SQL =>中联接的更多信息https://www.w3schools.com/sql/sql_join.asp

希望它会对你有所帮助。