2014-03-24 55 views
3

enter image description hereMySQL複雜查詢。動態更新基於另一個表格的行

以上是我繪製的方案。有一個理想的情況,當content.user分組。但通常他們沒有分組。 我的意思在這個方案是:

  1. 在第一步,我選擇users.monetos WHERE users.id = content.user

  2. 在第二步,我遞減users.monetoscontent.cpc值(2.1,2.2)

當模擬這樣的: 選擇content.user(9)

選擇users.monetosusers.id=content.users(15)

因此,我們必須對users.monetosusers.id=9 15值,現在我們回到內容表 和:

  1. 遞減值15與8(content.cpc)(15- 8 = > 0 - >去到步驟2)
  2. 減量7(來自之前的步驟導致)10(content.cpc)(7-10 = -3 < 0 - >更新 含量設定爲有效= '0' where content.id =(當前的id得到否定的結果))

而像這樣對每個content.user

更多擴展 - 我想選擇contet.*行具有content.active = 1 (n)的。有此數據,SELECTusers.monetos其中users.id = content.user來自上一個查詢。 現在,通過最大(n)的步驟我通過content.cpc上時** users.monetos = 0或小於0,我想更新content和SET的時刻值 和遞減users.monetos值活性= '0' **

通過詞語,我要像共享users.monetos量到每個內容條目(content.cpc每個)。並且沒有更多users.monetos使當前content 條目處於非活動狀態。並且每做一個內容。用戶 我在這一刻做了什麼如下所示。我現在看起來非常糟糕,但我已經不知道該怎麼做。

$query = "select content.id, content.cpc, conent.user, content.active from content a 
join users b on a.user=b.id 
group by b.id where a.active='1'"; 

/** cycle each user **/ 
foreach($rows = $connector->fetchArray($query) as $row) { 
    $monetos = $row['monetos']; 
    $query = "select id, cpc from content where user={$row['id']}"; 
    /** cycle each users content **/ 
    foreach($contents = $connector->fetchArray($query) as $content) { 
     echo $monetos; 
     $monetos -= $content['cpc']; 
     if($monetos <= 0) { 
      $disable[] = $content['id']; 
     } 
    } 
    if(isset($disable)) { 
     $connector->query("update content set active='0' where id in(".implode(',',$disable).")"); 
    } 
} 
+0

這真的很難幫你,當你不給出任何數據的例子,或適當的表結構。當你試圖實現一些複雜的alghoritm時,我認爲最好是繪製一個模式來更容易理解你的想法。 – CrazySabbath

+0

只給我一分鐘 –

+0

@CrazySabbath有。我會很高興,如果你會看看它 –

回答

0

你可以試試這個代碼:

$query = "select * from users"; 
foreach($rows = $connector->fetchArray($query) as $row) { 
    $a=''; 
$query = "select * from content where user='{$row[id]}' and active='1' "; 
foreach($contents = $connector->fetchArray($query) as $content) { 
    $a++; 
    $a_min=$a-1; 
    $test[$a]=$row[monetos]-$content[cpc];  
    if($a==2){ 
     if($test[$a_min] > 0){ 
      $test2=$test[$a_min]-$content[cpc]; 
      if($test2 < 0){ 
       $connector->query("update content set active='0' where id='$content[id]'"); 
      } 
     } 
    } 
} 
} 
+0

謝謝你,不幸的是,它不工作 –