1

私は PHP と MySQL で作業して、メンバーシップ ディレクトリを作成して一覧表示しています。会社、連絡先、支店の 3 つのテーブルがあります。会社には連絡担当者がいて、すべてではありませんが一部の会社には連絡担当者がいる支店があります。最初のクエリで 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;
}

今、2 番目のクエリを実行する方法を見つけようとしています。このクエリでは、上記の配列 $company_array に格納されている company_id と一致する company_id を持つすべてのブランチをブランチ テーブルから選択する必要があります。次に、2 番目のクエリの結果を $branch_array という 2 番目の配列に格納します。私はこれを試しました:

// 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 をチェックしてブランチ テーブル内で一致するかどうかを確認するために、クエリを実行する必要があります。ありがとう。

4

1 に答える 1

0

while は 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;
    }
}
于 2013-08-30T17:49:59.697 に答える