1

此代码将成员列表汇总在一起,然后列出他们在类别中添加的所有项目,然后将所有这些信息输出到表中。

这是3个表格布局:

Members
member_id - fname - lname - etc.

Items
member_id - item_id - etc.

Categories
name - etc.

以及需要 FOREVER 加载的当前代码:

<?php $sql="SELECT * FROM members ORDER BY lname, fname ASC"; 
    $result=mysql_query($sql);
    while($rows=mysql_fetch_array($result)){ ?>
        <? echo('Name'); ?>
        <? echo $rows[fname];?> <? echo $rows[lname];?> 

    <? $sql2="SELECT * FROM leadtypes ORDER BY name ASC"; 
    $result2=mysql_query($sql2);
    while($rows2=mysql_fetch_array($result2)){ ?>

        <? echo $rows2[name];?>
        <? echo(': '); ?>

        <? $sql4="SELECT lead_id FROM leads WHERE member_id='$rows[member_id]' AND type='$rows2[name]' ORDER BY name ASC"; 
        $result4=mysql_query($sql4);
        $num4 = mysql_num_rows($result4); ?>

        <? echo $num4;?>

    <? } ?>
<? } ?>`

我知道我不应该查询 * 但这是测试服务器上的一段非常精简的代码。如果有人知道将所有这些结合在一起以加速系统的好方法,我将不胜感激。

4

2 回答 2

0

尝试进行一次连接而不是多次查询。例如,

SELECT lt.*, l.lead_id FROM leadtypes lt, leads l WHERE l.member_id=lt.member_id AND l.type=lt.name ORDER BY l.name ASC

如果该查询仍然很慢,则意味着您需要在表上添加索引。

于 2013-09-15T16:10:11.633 回答
0

尝试这个

$sql = SELECT A.lead_id,B.name,C.fname,C.lname 
       FROM leads A
       JOIN leadtypes B ON A.type = B.name 
       JOIN members C ON A.member_id = C.member_id

您可以将其回显为

$rs = mysql_query($sql);
while($rows = mysql_fetch_array($rs)){
  echo $row['name'];
  echo $row['fname'];
}

看看这些链接

  1. http://www.w3schools.com/sql/sql_join.asp
  2. http://dev.mysql.com/doc/refman/5.0/en/join.html
于 2013-09-15T18:52:20.793 回答