通过使用PHP和MySQL连接多个表来查询获取多个数据

时间:2016-02-04 06:40:59

标签: php mysql

我需要一个帮助。我需要在使用PHP和Mysql加入多个表后获取一些数据,所以我需要相应的查询。我正在解释下面的表结构。

  

db_order:

id     order_id    promocode

1      10           A12016

2       11          A12016
  

db_order_product:

id   order_id   pro_data_id  quantity

1     10         20          2

2     10         22          3

3     11         20          1
  

db_product_info:

pro_data_id   product_name

20            abc

22            xyz

我尝试了类似下面的内容,但它不起作用。

$sqlqry="select * from db_order order by id desc";
$orderqry=mysqli_query($con,$sqlqry);
while($row=mysqli_fetch_assoc($orderqry)){
    $order_id=$row['order_id'];
    $sqlproqry="select * from db_order_products where order_id='".$order_id."'";
    $proqry=mysqli_query($con,$sqlproqry);
    while($row1=mysqli_fetch_assoc($proqry)){
        $product_data_id=$row1['pro_data_id'];
        $sqldataqry="select * from db_product_data where pro_data_id='".$product_data_id."'";
        $prodataqry=mysqli_query($con,$sqldataqry);
        while($prodatarow=mysqli_fetch_assoc($prodataqry)){
            $pro_id=$prodatarow['pro_Id'];
            $sqlpro="select * from db_product_info where pro_Id='".$pro_id."'";
            $prodata=mysqli_query($con,$sqlpro);
            $prorow=mysqli_fetch_array($prodata);
        }
    }
$result[]=array('id'=>$row['id'],'order_id'=>$row['order_id'],'promocode'=>$row['promocode'],'order_pro_id'=>$row1['id'],'pro_data_id'=>$row1['pro_data_id'],'pro_quantity'=>$row1['quantity'],'product_name'=>$prorow['Product_name']);
}
echo json_encode($result);

我需要第一个用户将转到db_order表获取所有值,并根据order_id所有数据应从db_order_product获取,然后根据pro_data_iddb_order_product获取{1}}表它将从db_product_info表中获取数据并最终返回数组中的所有数据。请帮助我。

3 个答案:

答案 0 :(得分:1)

只需使用简单的JOIN

即可
SELECT o.id, o.order_id, o.promocode, p.id AS order_pro_id, p.prod_data_id, p.quantity AS pro_quantity, i.product_name
FROM db_order AS o
JOIN db_order_products AS p ON o.order_id = p.order_id
JOIN db_product_data AS d ON p.pro_data_id = d.pro_data_id
JOIN db_product_info AS i ON i.pro_Id = d.pro_Id
ORDER BY o.id DESC

答案 1 :(得分:0)

你必须修复你的查询:

改为使用此查询:

  select * from db_order,db_order_product,db_product_info where db_order.order_id=db_order_product.order_id and db_order_product.pro_data_id=db_product_info.pro_data_id

答案 2 :(得分:0)

SELECT dor.id,dordor.order_id,dor.promocode
FROM db_order AS dor
JOIN db_order_product AS dop ON dop.order_id = dor.order_id
JOIN db_product_info as dpi ON dpi.pro_data_id=dop.pro_data_id