首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中针对嵌套循环优化mysql查询

如何在php中针对嵌套循环优化mysql查询
EN

Stack Overflow用户
提问于 2015-02-07 14:50:58
回答 2查看 501关注 0票数 0

我有两个表,一个是category表,另一个是products.Catid表。我需要使用两个while循环来显示表中的数据。它工作得很好,但需要更多的时间,如果它处理更多的类别,就会抛出错误。

代码语言:javascript
复制
   <table>
<tr>
<?php
$cat=mysql_query("select * from category");
while($catquery=mysql_fetch_assoc($cat))
{?>
<td><?php echo $catquery['catid'] ?></td>
<td><?php echo $catquery['catname']?></td>
<?php 
 $catid=$catquery['catid'];
 }?>
<?php
$product=mysql_query("select * from product where catid=$catid");
 while($productquery=mysql_fetch_assoc($product))
{ 
?>
<td><?php echo $productquery['productname'] ?></td>
</tr>
</table>
EN

回答 2

Stack Overflow用户

发布于 2015-02-07 15:24:31

代码语言:javascript
复制
select * from category a left join product b
on a.catid = b.catid

最好将列逐个定义,以便将数据导入PHP,如下所示:

代码语言:javascript
复制
select a.catid as category_catid, 
       a.catname as category_name,
       b.productname as product_productname
from category a left join product b
on a.catid = b.catid

如果你想显示所有的产品,即使catid已经在分类中被删除了,你可以使用这个(和FULL JOIN一样):

代码语言:javascript
复制
select a.catid as category_catid, 
       a.catname as category_name,
       b.productname as product_productname
from category a left join product b
on a.catid = b.catid
union
select a.catid as category_catid, 
       a.catname as category_name,
       b.productname as product_productname
from category a right join product b
on a.catid = b.catid

下面是获取数据的方法:

代码语言:javascript
复制
while($catquery=mysql_fetch_assoc($cat))
{?>
<td><?php echo $catquery['category_catid'] ?></td>
<td><?php echo $catquery['category_name']?></td>
<td><?php echo $catquery['product_productname']?></td>
....
票数 0
EN

Stack Overflow用户

发布于 2015-02-07 15:29:21

尝试此查询。它将列出所有类别的详细信息及其各自的产品名称(catproducts-在以下查询中)。

代码语言:javascript
复制
<table>

<?php
$cat=mysql_query("select *,(select group_concat(productname) as catproducts from product where product.catid= category.catid) as catproducts from category");
while($catquery=mysql_fetch_assoc($cat)) { ?>
  <tr>
  <td><?php echo $catquery['catid']; ?></td>
  <td><?php echo $catquery['catname'];?></td>
  <td><?php echo $catquery['catproducts']; ?></td>
  </tr>
<?php }//end while ?>

</table>

因此,您的输出将是

代码语言:javascript
复制
catid  catname      catproducts

1      stationary   book,pen
2      leather      wallets,bags
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28379469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档