我正在使用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 :(得分: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;
}
}