2016-10-26 23 views
5

Bir satırı güncellemeye çalışıyorum ve shipment_number öğesini max()+1 ile ayarlamaya çalışıyorum. Bunun nedeni, tablonun zaten adında bir başka sütun üzerinde auto_increment olduğunu göstermektedir. İlk sorgudan max(shipment_number)'u alıyorum ve sonraki sorguda +1 ile iam arttırıyorum. Ama iam Hatayla ..Güncelleştirme ve değeri max() + 1 ile ayarlayın

# 1093 - Sen

Herkes pls bu sorgu ile bana yardımcı FROM yan tümcesinde güncelleştirme için hedef tablo 'commercial_sales_custpo_process' belirleyemezsiniz. Auto_Increment değil varsa

$max = "SELECT MAX(shipment_number) FROM commercial_sales_custpo_process WHERE 
tender_id='$tender_id' AND id='$id'"; 

$query1="UPDATE commercial_sales_custpo_process set shipment_number = ($max+1) WHERE 
tender_id='$tender_id' AND id='$id'"; 
mysql_query($query1) or die ("Error in query: $query1"); 
+0

deneyin sorgusuna girmeden önce arttırmak için parmağınızı. $ var = $ max + 1; 've sorguyu güncellemek için bu $ vari değişkenini atayın. ayrıca "mysqli" ile başlamanızı öneririz http://php.net/manual/en/book.mysqli.php – Karthi

+0

neden olmasın AUTO_INCREMENT – e4c5

+0

Eğer bir auto_increment zaten varsa, neden buna ihtiyacınız var? Aynı anda 2 seansta ortaya çıkan problemlerle uğraşmak zorunda kalmadan veri seçildiğinde hesaplanabilir. –

cevap

2

, basitçe UPDATE..JOIN kullanın:

UPDATE commercial_sales_custpo_process t 
CROSS JOIN (SELECT MAX(shimpent_number) + 1 as max_ship 
      FROM commercial_sales_custpo_process) s 
SET t.shipment_number = s.max_ship 
WHERE t.tender_id='$tender_id' AND t.id='$id' 
+0

Teşekkür ederim, iyi çalışıyor :) –

+0

Sorun değil dostum @SanjuMenon – sagi

İlgili konular