我一直在這個問題掙扎了一整天,嘗試了所有可能的方法,我know.here的問題:SQL查詢(用倒序和限制)不工作的Python(OpenERP的)
現場,我「M工作有這樣的格式:
XXX年的例子:001-2014(字符串)
假設我們有這些記錄:
- 001-2014
- 011-2014
- 013-2013
,我期望得到的結果是011-2014(換句話說,與最大的價值最早的一年)
心中已經寫了這個查詢工作正常在PostgreSQL上:
select split_part(numero_bl, '-', 1) as part1,
split_part(numero_bl, '-', 2) as part2
from livraisons
ORDER BY part2 desc,part1 desc limit 1
的split_part功能拆分列 'numero_bl' 2 parts.so結果是類似的東西:
part1 | part2
001 | 2014
當我嘗試將其引入Python代碼裏面返回使用升序但回報(「無」)正確的價值觀,當談到降序
這裏是我的函數的簡單版本在python:
def set_numero_bl(self, cr, uid, ids,name,arg,context=None):
res={}
cr.execute("""select split_part(numero_bl, '-', 1) as part1,
split_part(numero_bl, '-', 2) as part2
from livraisons
ORDER BY part2 desc,part1 desc limit 1""")
execution = cr.fetchone()
part1 = execution[0]
part2 = execution[1]
if part1:
if part2:
annee = int(part2)
nombre = int(part1)+1
valeur_final= str('%0*d' % (3, nombre))+"-"+str(annee)
for livraisons in self.browse(cr, uid, ids):
res[livraisons.id]= valeur_final
else:
valeur_final= str('%0*d' % (3, 1))+"-"+datetime.datetime.strftime(datetime.datetime.now(), '%Y')
for livraisons in self.browse(cr, uid, ids):
res[livraisons.id]= valeur_final
return res
當然
的時候我不會把「其他條款」將返回(「無」)
請反正是有網絡連接x它還是以任何其他方式解決它?
謝謝
首先,一般來說,您應該避免像這樣建模數據。這應該是兩個領域。 –
謝謝您的回覆。我知道如果它們是兩個獨立的字段,操作它會更容易,但由於受到一些限制,我有時不得不將它存儲在一個字段中。 – soukainas