Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1335 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Réglé] [SQL] Update après un select

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Réglé] [SQL] Update après un select

n°2251516
tomware
Moteur à eau
Posté le 23-02-2015 à 15:58:41  profilanswer
 

Bonjour,  :hello:  
 
J'ai besoin de faire une extraction aléatoire de 20 personnes dans une base de donnée sous phpmyadmin
De cette extraction, il faut que j'indique "1" dans le champ "sortie" pour chaque ligne extraite. (donc je connais pas les id a l'avance)
 
Est ce que cela est possible ?
 
Ma requête de base est la suivante :

Citation :

SELECT * FROM `membre` WHERE sortie = '0' ORDER BY rand()   LIMIT 20


J'exporte la base de donnée des résultats avec phpmyadmin. Pour l'injecter dans une autre base. C'est rapide et simple.
 
Et c'est après, pour mettre a jour en sortie="1" où je sèche, en théorie il faudrait quelque chose du genre :

Citation :

SELECT * FROM `membre` WHERE sortie = '0'  ORDER BY rand()    LIMIT 20
{ update sortie = '1' }  


 
Si quelqu'un peut m'aiguiller merci a lui


Message édité par tomware le 23-02-2015 à 18:48:20
mood
Publicité
Posté le 23-02-2015 à 15:58:41  profilanswer
 

n°2251518
masklinn
í dag viðrar vel til loftárása
Posté le 23-02-2015 à 16:11:11  profilanswer
 

Sous MySQL? Nope, pas en une seule query.

 

MSSQL a UPDATE…OUTPUT, Postgres et Oracle ont UPDATE…RETURNING, MySQL a rien du tout (MariaDB a delete…returning mais pas update…returning).

 

Accessoirement, ORDER BY rand() est lent, il doit aléatoirement trier les lignes en mémoire avant d'appliquer LIMIT: http://jan.kneschke.de/projects/mysql/order-by-rand/


Message édité par masklinn le 23-02-2015 à 16:15:52

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2251531
tomware
Moteur à eau
Posté le 23-02-2015 à 18:48:08  profilanswer
 

Merci masklinn :hello:  
 
en effet je suis sous mysql. Pas grave je vais créer un script php.
 
C'est bon a savoir merci :jap:

n°2251672
kao98
...
Posté le 25-02-2015 à 11:48:33  profilanswer
 

Je suis pas certain d'avoir compris, et je ne suis pas certain de ce que je vais proposer, mais est-ce qu'il n'est pas possible de faire ça :

Code :
  1. UPDATE
  2.  t.sortie=1
  3.  
  4. FROM
  5.  ma_table t
  6.  
  7. WHERE
  8.  t.id IN
  9.  (
  10.    SELECT
  11.      ma_table.id
  12.    
  13.    FROM
  14.      ma_table
  15.  
  16.    WHERE
  17.      ma_table.sortie = 0
  18.  
  19.    ORDER BY RAND()
  20.    LIMIT 20
  21.  )
 

? :??:

 

Pas testé, mais dans l'idée me semble que ça devrait être possible.
1 seule instruction.
Absolument pas optimisé, c'est vraiment très lent comme solution, mais c'est toujours mieux que de faire faire ça par du PHP ou un autre client quel qu'il soit.
Et en cherchant un peu, on peut peut-être optimiser un poil !?

Message cité 1 fois
Message édité par kao98 le 25-02-2015 à 11:49:53

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°2251675
masklinn
í dag viðrar vel til loftárása
Posté le 25-02-2015 à 12:12:08  profilanswer
 

kao98 a écrit :

Je suis pas certain d'avoir compris, et je ne suis pas certain de ce que je vais proposer, mais est-ce qu'il n'est pas possible de faire ça


Ça va faire un update de records sélectionnés via le bon critère, mais ça va pas renvoyer les records sélectionnés. De ce que j'ai compris, il veut récupérer les records et les mettre à jour (la maj c'est pour savoir quels records ont été récupérés pour les bricoler je présume, histoire que le coup d'après tu resélectionnes pas des records déjà processés).

Message cité 1 fois
Message édité par masklinn le 25-02-2015 à 12:12:39

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°2251688
kao98
...
Posté le 25-02-2015 à 14:06:29  profilanswer
 

masklinn a écrit :


Ça va faire un update de records sélectionnés via le bon critère, mais ça va pas renvoyer les records sélectionnés. De ce que j'ai compris, il veut récupérer les records et les mettre à jour (la maj c'est pour savoir quels records ont été récupérés pour les bricoler je présume, histoire que le coup d'après tu resélectionnes pas des records déjà processés).


C'est pour ça que j'ai dit que je n'étais pas sûr d'avoir compris.
J'ai bien vu que c'est ce à quoi tu avais répondu, mais j'ai pas l'impression d'y lire cela dans sa question en fait.


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Réglé] [SQL] Update après un select

 

Sujets relatifs
Requête SQL jointure deux champs vers un même champbesion solution Exercice SQL
décimales qui se n'affichent pas SQL Developer[POSTGRES SQL] Besoin d'aide
(SQL] AIde pour requètePDO et procédure stockée SQL Server
Application avec base SQL plus rapide si Management Studio openSQL Monitoring
[Résolu / SQL] Update avec select ?[SQL] UPDATE dans une requete SELECT ?
Plus de sujets relatifs à : [Réglé] [SQL] Update après un select


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR