我们有3张桌子。
1)订单
PK
的order_id
2)订单_产品
PK | FK |专栏|柱
order_product_id | order_id | product_id |名字|量
3)订单_产品_组件
PK | FK |专栏|专栏|柱
order_product_component_id | order_product_id | stock_id |名字|量
表2和表3具有一对多的关系。
因此,如果我们想要获得一系列订购产品及其组件,我们可以使用哪种最佳查询?
最后结果应该是这种格式(如果我们只有1个产品有2个组件):
$products = array(
array(
' 'product_id' => x,
'name' => x,
'quantity' => x,
'stocks' => array(
array(
'stock_id' => x,
'name' => x,
'quantity' => x),
array(
'stock_id' => x,
'name' => x,
'quantity' => x)));
答案 0 :(得分:0)
由于订单是保留字,我已将订单表名称更改为“订单”。我正在使用join来获得预期的结果。我认为group by不会像你想要的那样得到结果。
$sql= "select * from orders o join order_products op on o.order_id=op.order_id";
$stmt = $db->prepare($sql);
$stmt->execute();
$orders =$stmt->fetchAll();
foreach($orders as $o){
$sql= "select stock_id,name,quantity from order_products op
join order_product_components opc on opc.order_product_id=op.order_product_id where op.order_product_id=:orderprodid";
$stmt = $db->prepare($sql);
$stmt->execute(array('orderprodid'=>$o['order_product_id']));
$comps =$stmt->fetchAll();
$o['stocks']=$comps;
}
答案 1 :(得分:0)
您可能不想进行查询循环,这可能非常昂贵。
只需查询加入所有表格并按产品ID,产品名称,...库存ID,库存名称等排序,然后循环显示结果并一次性构建数组。