pb UPDATE et IF(,,)

pb UPDATE et IF(,,) - SQL/NoSQL - Programmation

Marsh Posté le 09-05-2007 à 12:15:44    

hello tous,

 

voilà ma requete :

 
Code :
  1. UPDATE orders_products SET date_first_dl=IF(tracks_is_dl<>'yes',
  2. '11-11-1111', '01-01-1991'), tracks_is_dl='yes'
  3. WHERE orders_products_id='510'


à la suite de ça, "tracks_is_dl" est bien changé, mais pas "date_first_dl" qui reste à '00-00-0000'...

 

Pourquoi ?

 

2e question : je ne voudrais updater l'un les champ que si une condition est vérifiée.
Par ex, dans la requete précédente, je voudrais mettre toujours "tracks_is_dl" à 'yes', mais ne modifier "date_first_dl" QUE SI "tracks_is_dl" est à 'no' (avant d'etre mis à yes bien sur)

 

Je sais aps si je m'exprime bien. Une sorte de :

Code :
  1. UPDATE orders_products SET IF(tracks_is_dl<>'yes',
  2. date_first_dl='06-06-2007', **NE RIEN FAIRE**), tracks_is_dl='yes'
  3. WHERE orders_products_id='510'


Bien sur ça marche pas ce genre de truc.


Message édité par theredled le 09-05-2007 à 12:16:12

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 09-05-2007 à 12:15:44   

Reply

Marsh Posté le 09-05-2007 à 13:06:51    

Avec quelle base de données ?
 
Si c'est avec Oracle, il faudrait essayer avec DECODE plutôt que IF.
 
Pour ne rien faire, une technique habituelle consiste à remettre la même chose :
 
   date_first_dl=IF(tracks_is_dl<>'yes', '06-06-2007', date_first_dl)

Reply

Marsh Posté le 09-05-2007 à 14:39:27    

olivthill a écrit :

Avec quelle base de données ?
 
Si c'est avec Oracle, il faudrait essayer avec DECODE plutôt que IF.
 
Pour ne rien faire, une technique habituelle consiste à remettre la même chose :
 
   date_first_dl=IF(tracks_is_dl<>'yes', '06-06-2007', date_first_dl)


MySQL pardon j'ai pas précisé :jap:
 
Ta technique  je l'ai essayée ça me sempble ne pas marcher... (normal puisque même mon premier exemple ne marche pas)


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 09-05-2007 à 15:47:44    

chais pas, mais le if renvoit rien, donc l'affectation ne marche pas je pense. Tu peux pas coller un return ou un truc comme ca ? :D

Reply

Marsh Posté le 09-05-2007 à 16:02:11    

question: tu souhaites mettre à jour tous les enregistrements de ta base, en leur mettant à tous track_is_dl à 'yes' et en changeant la date si track_is_dl n'était pas à yes.
C'est bien ça?
Si oui, est-ce que la simple requête suivante ne te suffirait pas:

Code :
  1. UPDATE orders_products SET 
  2.     date_first_dl='06-06-2007', tracks_is_dl='yes'
  3.     WHERE orders_products_id='510' and tracks_is_del <> 'yes'


Message cité 1 fois
Message édité par anapajari le 09-05-2007 à 16:02:28
Reply

Marsh Posté le 09-05-2007 à 16:04:20    

anapajari a écrit :

question: tu souhaites mettre à jour tous les enregistrements de ta base, en leur mettant à tous track_is_dl à 'yes' et en changeant la date si track_is_dl n'était pas à yes.
C'est bien ça?
Si oui, est-ce que la simple requête suivante ne te suffirait pas:

Code :
  1. UPDATE orders_products SET 
  2.     date_first_dl='06-06-2007', tracks_is_dl='yes'
  3.     WHERE orders_products_id='510' and tracks_is_del <> 'yes'



Effectivement :o
 
De plus, vous avez bien sûr remarqué que j'avais inversé la date :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed