如果有两个表及其各自的列:
=====================
product_categories
=====================
id | name
=====================
=======================
products
=======================
id | category_id | name
=======================
我有以下php函数:
// Returns an array of all rows from the products
function getProducts() { ... }
// returns the corresponding row to the given id of the product category
function getProductCategory($category_id) { ... }
目前,我正在一个带有以下标题的表中显示所有产品的列表:
身份证件
类别
名称
其中category是与 category_id
产品名称。
目前我正在使用foreach循环遍历产品并调用 getProductCategory(...)
每种产品的功能:
<?php
...
$products = getProducts();
foreach ($products as $product) {
$product_category = getProductCategory($product['category_id']);
...
}
...
?>
如果有很多产品有很多重复的查询,那么这将是对数据库的大量查询。
如果 getProducts()
函数使用 JOIN
在 SQ
我的声明?
2条答案
按热度按时间7ivaypg91#
如果你想得到
id
,category_name
以及product_name
每一次,你应该做一个方法,避免做一个select
,然后是foreach
在每一个产品和另一个select
获得所有价值。所以试试这样的方法:
6pp0gazn2#
是的,加入会更好。它将减少获取类别的查询数。否则,您可以按照下面的代码单独查询类别,但我建议您加入。
您必须在中修改查询
getProductCategory()
并添加where in
比较中类别id的条件getProductCategory()
,您可以内爆类别ID,以便将其添加到where in
条款。