2013-05-07 1 views
0

Привет всем У меня есть следующее обновление для моей таблицы в MYSQL:MySql добавления 1 к номеру для нескольких изменяемых строк

$dbBuilder = ''; 

foreach($_POST as $key => $value) 
{ 
    if ($value != 'APPROVE') { 
     $dbBuilder = $value . ", " . $dbBuilder; 
    } 
} 

$dbBuilder = '(' . rtrim($dbBuilder, ", ") . ')'; 

UPDATE userCase SET Accepted = 1 WHERE CaseNum in $dbBuilder 

прекрасно работает как надо ... но теперь мне нужно, чтобы изменить его, чтобы позволить новый QNum для каждого любого CaseNum.

$result = mysql_query("SELECT QNum FROM userCase ORDER BY QNum DESC limit 1"); 

while($row = mysql_fetch_assoc($result)) { 
    $QNum = $row["QNum"] + 1; 
    break; 
} 

UPDATE userCase SET Accepted = 1, QNum = " . $QNum . " WHERE CaseNum in $dbBuilder 

делая это таким образом выше будет установлен QNum на тот же номер для все CaseNum в "In". Он должен быть уникальным (как, добавив 1 к QNum для каждой новой строки).

Это должно быть только 1 больше, чем последний QNum в таблице. Поэтому, когда кто-то «одобряет» несколько вещей (скажем, 3 вещи), он переходит к запросу выше, и он должен быть (скажем, последнее число - 4 в БД) так что это должно быть 5 , 6,7. Код, который у меня сейчас, будет только 5,5,5.

Как бы это сделать, используя тот же CaseNum in .... код выше?

Спасибо!

+0

Является ли 'QNum' внешним ключом? Почему он должен быть уникальным? Можете ли вы дать нам дополнительную информацию о вашей модели данных? – Halcyon

+0

'UPDATE yourTable SET theColumn = theColumn + 1'? – Kermit

+0

Это должно быть только 1 больше, чем последний QNum в таблице. Поэтому, когда кто-то «одобряет» несколько вещей ** (скажем, 3 вещи) **, он переходит к этому запросу, и он должен быть ** (скажем, последнее число - 4) **, поэтому это должно быть ** 5,6,7 **. Код, который у меня сейчас, будет просто делать ** 5,5,5 **. – StealthRT

ответ

0
UPDATE userCase as u1 set Accepted = 1, 
    QNum = (select 
     count(*) 
     from userCase as u2 
     where QNum is not null 
     or (
      u2.CaseNum in (...) 
      and u2.CaseNum < u1.CaseNum 
     )) 
where CaseNum in (...) 
Смежные вопросы