2017-08-11 92 views
0

所以我的下一个数据库:PHP MySQL查询和阵列协会

+------+---------------+-------+ 
| Id |  Title  | Price | 
+------+---------------+-------+ 
| 300 | Part1   | 30 | 
| 400 | Part2   | 40 | 
| 500 | Part3   | 50 | 
| 3215 | Promo Package | 130 | 
+------+---------------+-------+ 

而且

+-----------------+--------------+ 
| Promo_prod_main | product_part | 
+-----------------+--------------+ 
|   3215 |   300 | 
|   3215 |   400 | 
|   3215 |   500 | 
+-----------------+--------------+ 

两个人会创造让说,一个促销包(3个产品)。

问题是,有时,3部分的价格会发生变化,但不会影响促销套餐价格。

我决定创建一个脚本,选择每个促销包,然后获取其创建的产品,总结价格数​​组,然后更新促销包。

所有好的想法,直到我得到的代码,我管理这个地步:

$rezultatebumb = mysqli_query($linkul, "SELECT id,title,price FROM product WHERE attr_group_id IS NULL AND is_homepage IS NULL") or die(mysqli_error($linkul)); // this query only selects the promo packages 
$array_m = array(); 
foreach ($rezultatebumb as $valc) { 
    $array_m[] = $valc['id']; 
} 

$array_s = array(); 
foreach ($array_m as $arr) { 
    $rezprod = mysqli_query($linkul, "SELECT product_part FROM product_promo WHERE Promo_prod_main=" . $arr) or die(mysqli_error($linkul)); 
    $tesat = $rezprod->fetch_assoc(); 

    $array_s[] = $tesat['product_part']; 
    echo count($array_s); 

} 

print_r($array_s); 
echo '</br></br>'; 
print_r($array_m); 

结果下一步 - >

一个产品从每包

Array ([0] => 146 [1] => 1497 [2] => 565 [3] => 6576 [4] => 1516) 

每个促销包

Array ([0] => 5732 [1] => 5758 [2] => 6998 [3] => 7032 [4] => 7033) 

之前,我得到这样的消息“你应该写的代码自己”,以及我尽力了,我只是不能让过去这一点的任何地方。

我会很感激任何提示或解决这个问题,谢谢!

回答

0

很遗憾,我唯一能理解的就是这部分。

我决定创建一个选择每个促销包脚本,然后 获知其从创造的产品,总结 价格的阵列,然后更新促销包。

所以,你可以像连接一样获得与促销包相关的所有产品的数组。

SELECT p.Price from product p 
join promo_table pt 
on (p.Id = pt.Promo_prod_main) 
where pt.promo_prod_main=3215 

通行证它会导致对数组,然后做array_sum()到阵列以获得总价。

然后更新它的总价

0

您可以使用内部连接来准备软件包。随着内部查询联接:在这些线路上

select * from package a 
inner join product b 
on a.package_id = b.package_id 
where a.package_id = 5 

东西,你应该有对应于每个产品pacakage_id。或者你可以有另一个映射表来映射具有各种包的产品。