Лучший способ получить данные из нескольких таблиц MySQL с помощью PHP

Необходимость извлечения данных из нескольких таблиц. В одной таблице содержатся все данные о продукте, а в таблице product_id - во второй таблице содержатся дополнительные сведения, связанные с идентификатором продукта.

Каков наилучший способ получить данные из всех таблиц и, возможно, сохранить их в одном массиве или, в лучшем случае, в отдельных массивах, но одинаковой длины

если я получу данные из таблицы 1, используя

 $result = mysql_query("SELECT product_id,model,name,barcode FROM product");  
 $data = array();
 while($row = mysql_fetch_assoc($result))
 {
  $data[] = $row;
 }

я должен просто перебрать данные [$i]['product_id'] и запросить снова и сохранить в новом массиве? например

   $data2 = array();

   for($j=0; $j<=$count; $j++){
    $id = $data[$j]['product_id'];
    $result2 = mysql_query('SELECT stuff FROM product_descp WHERE product_id = $id');
    $row2 = mysql_fetch_array($result2);
    $data2[] = $row2['stuff'];
   }

2 ответа

Решение

Лучшим способом было бы позволить базе данных обрабатывать один большой запрос вместо выполнения множества разных запросов (по одному на каждый продукт):

SELECT product_id,model,name,barcode 
FROM product 
JOIN product_descp 
ON product.product_id = product_descp.product_id

Получите это в массив, как вы делаете, и все в порядке.

Поскольку таблицы разделяют product_id В этом поле вы можете выполнить запрос JOIN между всеми таблицами, которые имеют этот идентификатор и возвращают все столбцы из каждой таблицы в виде одного массива. http://www.w3schools.com/sql/sql_join.asp

Другие вопросы по тегам