IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

ORDER BY RAND() ne fonctionne pas dans INSERT


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 141
    Points : 92
    Points
    92
    Par défaut ORDER BY RAND() ne fonctionne pas dans INSERT
    Bonjour à tous

    j'exécute la requête suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO concoursTrouveMiniatures (idMini, membre)
     
    SELECT id, 3928
    FROM concoursCouleursFinal
    WHERE id NOT IN (SELECT idMini FROM concoursTrouveMiniatures WHERE membre=3928)
    ORDER BY RAND()
    LIMIT 1500
    le problème c'est que l'id qui est enregistré n'est pas du tout pris au hasard avec ORDER BY RAND()
    en faite les id se suivent de 1 jusqu'à 1500 ...

    Or ce n'est pas ce que je recherche ...

    Auriez-vous une idée pour que cela fonctionne, en sachant qu'à la base je l'ai fait en 2 requêtes via PHP mais faire 1500 fois une requête d'enregistrement ne me branche guère, voilà pourquoi j'ai opté pour la solution en une seule requête

    Merci d'avance

    EDIT :
    j'ai trouvé pourquoi il fait ça mais je n'arrive pas à l'empêcher, en fait le ORDER BY RAND() "s'affecte" à la sous requête SELECT idMini FROM concoursTrouveMiniatures WHERE membre=3928 pourtant elle est bien entre parenthèses ...
    si j'enlève mon WHERE alors le ORDER BY RAND() fonctionne bien
    j'ai donc essayé de rajouter des parenthèses à différents endroits mais rien à faire...

    Merci pour votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 141
    Points : 92
    Points
    92
    Par défaut
    j'ai trouvé une solution pour contourner le problème en passant par 2 requêtes séparées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO concoursTrouveMiniatures (idMini, membre)
     
    SELECT id, 3928
    FROM concoursCouleursFinal
    WHERE id NOT IN (SELECT idMini FROM concoursTrouveMiniatures WHERE membre=3928)
    ORDER BY RAND()
    LIMIT 1500
    je stock d'abord dans une variable php le contenu de la sous-requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT idMini FROM concoursTrouveMiniatures WHERE membre=3928
    puis j'insère ce contenu dans ma requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO concoursTrouveMiniatures (idMini, membre)
     
    SELECT id, 3928
    FROM concoursCouleursFinal
    WHERE id NOT IN (1, 2, 3, 45, 89, 1235, 6549, ...)
    ORDER BY RAND()
    LIMIT 1500
    et de ce fait le "order by rand() s'applique au bon "select" et non plus à la sous-requête ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] insert into ; ne fonctionne pas dans mon form
    Par gastoncs dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/07/2010, 16h22
  2. [FTP] fopen qui ne fonctionne pas dans tous les contextes ..
    Par Christophe Charron dans le forum Langage
    Réponses: 6
    Dernier message: 15/06/2006, 10h25
  3. Réponses: 3
    Dernier message: 26/01/2006, 13h11
  4. La fonction CurrentDb() ne fonctionne pas dans une requête
    Par Sébastien Le Goyet dans le forum Access
    Réponses: 8
    Dernier message: 24/11/2005, 17h46
  5. Réponses: 1
    Dernier message: 27/10/2005, 21h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo