Mysql查询多个表

时间:2013-09-15 16:03:23

标签: php mysql performance

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

以下是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;?>

    <? } ?>
<? } ?>`

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

2 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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