1

1つのmysqlテーブルから値の配列を取得し、別のテーブルでそれらの値を検索して、それらからデータをプルしようとしています。注文テーブル(id、product_id)と製品テーブル(id、price)の2つのテーブルを想像してみてください。私は基本的にorders.idでいっぱいの配列を使用して、配列内のそれらのIDのproducts.priceを合計しようとしています。

PHPでorders.idでいっぱいの配列を取得する方法を理解しました

    $results = mysql_query("SELECT id FROM orders WHERE some_value =" . $passed_value . "");
    while ($row = mysql_fetch_row($results))
      {
        $results_array[] = $row[0]; 
      }

問題は、その配列ができたので、それを使用して別のテーブルで配列内のIDを検索し、その行からデータをプルするにはどうすればよいかということです。

4

1 に答える 1

2

を使用し$results_arrayて製品IDを取得してから、を使用して行ったような別のクエリを実行できます$results_array['product_id']

ただし、これは非常に非効率的です。適切な方法は、SQL結合または次のような単純な結合クエリを実行することです。

SELECT orders.id, orders.product_id, products.price 
FROM orders, products 
WHERE orders.id = '" . $your_order_id . "' and products.id = orders.product_id

結果の行には、両方のテーブルから必要なすべての情報が含まれます。

更新:詳細情報

句を使用してWhere暗黙的に結合する場合、それは事実上内部結合です。つまり、両方のテーブルに少なくとも1つの一致がある場合に、行を返します。一方、左結合は、2番目のテーブルに一致する行がない場合でも、最初のテーブルからすべての行を返します(この場合、2番目のテーブルに対応するそれぞれのフィールドがnullになります)。

したがって、パフォーマンス(結合のタイプが影響を与える可能性はありますが、フィールドにあるインデックスによって決定されます)ではなく、取得する結果によって何を選択するかによって異なります。完全に理解するには、ここを参照してください(結合に関する5つの連続したページを必ず読んでください)。

于 2012-11-25T03:36:23.903 に答える