假设我是这样的表:
分类
| 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 |
但是,类别的名称可能会更改,因此链接将不再起作用。所以我该怎么做?还有另一种方法吗?
答案 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
希望它会对你有所帮助。