2013-08-30 38 views
1

我正在使用PHP和MySQL创建并列出成员目录。我有三张桌子 - 公司,联系人和分支。公司有联系人,有些但不是所有公司都有分支机构,也有联系人。我使用LEFT JOIN我先查询到接触的人连接到他们各自的公司,并将结果加载到一个数组,该作品使用下面的代码:如何在新的选择查询中使用存储阵列中的键值

// Retrieve all the data from the "company" table 
$query = "SELECT * FROM company LEFT JOIN contact ON company.company_id = contact.company_id WHERE comp_county = 'BERNALILLO' ORDER BY company.comp_name, contact.cont_rank"; 

$result = mysql_query($query) 
or die(mysql_error()); 

// Build the $company_array 
$company_array = array(); 
while($row = mysql_fetch_assoc($result)) { 
    $company_array[] = $row; 
} 

现在我试图找出如何运行第二个查询,它需要从我的分支表中选择company_id与存储在我上面的数组中的company_id匹配的所有分支:$ company_array。然后我想将第二个查询的结果存储到名为$ branch_array的第二个数组中。我试过这个:

// Retrieve all the matching data from the "branch" table 
foreach($company_array as $row) { 
$query2 = "SELECT * FROM branch LEFT JOIN contact ON branch.branch_id = contact.branch_id WHERE branch.company_id = '".$row['company_id']."' ORDER BY branch.br_name, contact.cont_rank"; 
$result2 = mysql_query($query2) 
or die(mysql_error()); 
} 
// Build the $branch_array 
$branch_array = array(); 
while($row2 = mysql_fetch_assoc($result2)) { 
    $branch_array[] = $row2; 
} 

但是,这似乎并没有工作......任何人都可以给我一个如何做到这一点的例子吗?该查询需要运行,以便它检查我的$ company_array中的每个不同的company_id以查找分支表中的匹配项 - 希望问题有意义。谢谢。

回答

0

我想你的,而应该是你的foreach语句里面,这样你的$branch_array可填充全部company_id值,结果不仅是最后一个:

foreach($company_array as $row) { 
$query2 = "SELECT * FROM branch LEFT JOIN contact ON branch.branch_id = contact.branch_id WHERE branch.company_id = '".$row['company_id']."' ORDER BY branch.br_name, contact.cont_rank"; 
$result2 = mysql_query($query2) 
or die(mysql_error()); 

// Build the $branch_array 
    $branch_array = array(); 
    while($row2 = mysql_fetch_assoc($result2)) { 
     $branch_array[] = $row2; 
    } 
} 
相关问题