2017-04-19 29 views
0

我試圖根據列的值'value'按比例分配一個表中的每一行的數量,它是所有行的該列總和的百分比。例如根據該行中列的值,按比例分配一個數字MySQL PHP

AmounttoDistribute = 200 
CurrentTotal = 100 
Row 1 value = 25 
Row 2 Value = 50 
Row 3 Value = 15 
Row 4 Value = 10 

我想讓它在那裏

Row 1 will receive 50 
Row 2 will receive 100 
Row 3 will receive 30 
Row 4 will receive 20 

我已經試過while循環不同的一對夫婦,但到目前爲止,結果比我想達到非常不同。我已經在變量中獲得了$ AmounttoDistribute和$ SumofValue,我知道這些變量是正確的。以下是我已經試過:

$val = mysqli_query($db, "SELECT Value FROM Table WHERE columnX = 1 AND columnY = 1"); 
$Result = mysqli_fetch_array($val); 
$value = $Result['Value']; 

while($Result = mysqli_fetch_array($val)){ 
mysqli_query($db, "UPDATE Table SET Value = Value + (Value/$SumofValue * $AmounttoDistribute) WHERE columnX = 1 AND columnY = 1");  

我也試過下面,我已經通過SumofValue分爲AmounttoDistribute一個變量($ AmountPerEach1)while循環:

$val = mysqli_query($db, "SELECT Value FROM Table WHERE columnX = 1 AND columnY = 1"); 
$Result = mysqli_fetch_array($val); 
$value = $Result['Value']; 

while($Result = mysqli_fetch_array($val)){ 
mysqli_query($db, "UPDATE Table SET Value = Value + (Value * $AmountPerEach1) WHERE columnX = 1 AND columnY = 1"); 

感謝您的任何幫助

+0

您需要更改數據庫中的該值,或者您想只顯示劃分的價值? –

+0

我需要將新金額添加到預先存在的值中,以便現在向行添加AmounttoDistribute之後,數據庫中的總計爲:行1 = 75,行2 = 150,行3 = 45,行4 = 30 – Shlomo7

+0

好的,當這些數值沒有以相等的比例相加時,哪一個會收到差異?或者它可以隨機選擇? –

回答

1

如果你知道AmountToDistributeCurrentTotal,您可以通過一個簡單的SQL語句做到這一點。

基本上是:

UPDATE table SET column = column + ((AmountToDistribute/CurrentTotal)*column); 

專門針對這種情況:

UPDATE Table SET Value = Value + 2*Value; 
+0

嗯,我感到愚蠢......非常感謝:) – Shlomo7

相關問題