update where et RAND()

Eléphanteau du PHP | 24 Messages

17 févr. 2015, 23:37

Bonjour tout le monde,

Je fais un petit site et je voudrais faire un update avec un where et rand(), le where ne s'applique pas ex:
$sql="UPDATE ma_table SET champ =''info' WHERE champ >50 ORDER BY RAND() LIMIT 100";

merci d'avance pour l'aide

Mammouth du PHP | 688 Messages

17 févr. 2015, 23:45

si cela ressemble à la vraie requête, le fait que champ soit une fois une chaine, et une fois un entier, peut aboutir à des résultats inattendus.

Eléphanteau du PHP | 24 Messages

18 févr. 2015, 00:16

Ce qui se passe c'est que le where ne s'applique pas et je vois pas comment l'imbriquer...
j'ai essayé comme ça mais il y a une erreur

$sql="UPDATE matable SET mon_champ ='info' WHERE mon_champ IN ( SELECT mon_champ > 50 FROM ma_table ORDER BY rand() LIMIT 100 )";

Mammouth du PHP | 2278 Messages

18 févr. 2015, 10:17

Bjr,
Quelle est la structure de la table ?
ET
Donne un exemple de son contenu.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 24 Messages

18 févr. 2015, 23:58

Bonsoir merci pour le coup de main

la table un petit bout...
CREATE TABLE IF NOT EXISTS `produits_combinaison` (
`id` float NOT NULL AUTO_INCREMENT,
`top_ventes` varchar(6) NOT NULL,
`Código` varchar(15) DEFAULT NULL,
`Categoria` varchar(87) DEFAULT NULL,
`Nombre` varchar(89) DEFAULT NULL,
`Atributo1` varchar(40) DEFAULT NULL,
`Atributo2` varchar(30) DEFAULT NULL,
`Detalle` varchar(3844) DEFAULT NULL,

J'arrive a faire un update au hasard du champs Atributo1 limité à 100, mais j'arrive pas a lui indiquer de le faire dans la mesure ou le champ "Stock" vaut "Si"
ça doit etre tout simple mais j'ai pas de message d'erreur et ça fait un update dans n'importe quel champs autre que "Stock"
voila

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 févr. 2015, 18:16

Ta sous requête contient une erreur, le > 50 (si tant est qu'il soit à conserver) devrait être dans une condition where et non dans le select :
UPDATE matable SET mon_champ ='info' 
  WHERE mon_champ IN ( 
    SELECT mon_champ FROM ma_table 
     WHERE mon_champ > 50 -- à confirmer/supprimer en fonction de ton besoin
     ORDER BY rand() 
     LIMIT 100 
 )
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 24 Messages

22 févr. 2015, 16:14

Bonjour,
Je reviens u peu tard mais merci pour la réponse
je regarde et je réponds