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

Langage SQL Discussion :

ORDER BY RAND() sur un COUNT


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 33
    Points
    33
    Par défaut ORDER BY RAND() sur un COUNT
    Bonjour à tous,

    Le mieux pour expliquer mon problème est de donner un exemple puisde le soumettre.

    table toto
    champ id (int)
    champ test (enum('1','0'))
    champ parent (int)

    requete:
    ex si parent=1
    SELECT id,COUNT(test) as nb FROM toto WHERE parent='1' AND test='1' AND nb>=1 GROUP BY id ORDER BY RAND(nb) LIMIT 1

    si ma table contient:
    1,1,1
    1,1,1
    1,1,1
    2,0,1
    2,1,1
    L'id 1 a une force de 3 dans le rand, et l'id 2 a une force de 1
    La requete devrait retourner
    soit 1,3
    soit 2,1

    Le but de la manoeuvre est de récupérer 1 di aléaoirement en donnant plus de chance à celui qui a le plus de '1' dans le champ test.

    Le problème que je rencontre est que dans la clause WHERE et GROUP BY, nb n'est pas reconnu. Savez vous comment je dois procéder?

    Merci pour votre aide précieuse

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    salut ,

    pour le 'order by' je ne sais pas trop,

    par contre pour l'autre partie il faut utiliser un having
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id,COUNT(test) as nb FROM toto 
    WHERE parent='1' AND test='1' 
    GROUP BY id
    HAVING COUNT(test) >=1

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Points : 33
    Points
    33
    Par défaut
    Merci Cybher, c'est exactement ce que je cherchait.
    Après recherches j'ai lu qu'il n'est pas possible de faire un rand sur une colone car celle ci est parcourue plusieurs fois.

    Je vais exécuter la requête que tu m'as donnée et je vais faire le tirage rand en php.



    Bonne journée

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

Discussions similaires

  1. [Access] Clause sur un Count
    Par Frankidi dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/06/2006, 17h12
  2. fonction rand() sur liste ?
    Par debutant-1 dans le forum C
    Réponses: 10
    Dernier message: 24/05/2006, 10h58
  3. Problème sur un count
    Par lamf dans le forum Requêtes
    Réponses: 5
    Dernier message: 27/01/2006, 19h17
  4. Requete MySQL avec un Rand sur une table
    Par tom06440 dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/01/2006, 17h37
  5. [ORDER BY]tri sur le dernier caractère d'un champ
    Par Tan dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/05/2004, 14h39

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