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

PHP & Base de données Discussion :

[Conception] SELECT aux hasards en multi table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2006
    Messages : 70
    Par défaut [Conception] SELECT aux hasards en multi table
    Bonsoir!

    J'espère que vous allez toutes et tous très bien!

    Pour illustrer mon problème je vais prendre un exemple fictif mais simple.

    Le contexte:
    Un site relatif à un sport. On y enregistre les pays, les équipes et les joueurs de ces équipes. On imagine donc la table "pays", la table "equipe" et la table "joueur"; la table "equipe" comporte un champ "pays" qui permet de lier à l'ID de la table "pays"; la table "joueur" comporte un champ "equipe" qui permet de lier à l'ID de la table "equipe".

    La problématique:
    Sur une page on souhaite afficher les 4 premièrs pays [par ordre d'ID croissant - "ORDER BY pays.id ASC"]; on imagine qu'une seule équipe est lié à chaques pays; et, pour chacunes de ces équipes on affiche un des joueurs aux hasard. On aura donc une requête dans ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT pays.nation,equipe.club,joueur.identite
    FROM pays LEFT JOIN equipe ON (pays.id=equipe.pays) LEFT JOIN joueur ON (equipe.id = joueur.equipe)
    GROUP BY equipe.id
    ORDER BY pays.id ASC,RAND()
    Mes questions:
    La requête ci-dessus est fonctionnelle [cad sans erreur]... mais ça ne donne pas le résultat voulu . Le joueur affiché est toujours le même par équipe [cad un joueur différent pour chaques équipe, mais toujours le même pour une équipe donnée]. Une idée sur comment faire? Je sais appliquer le RAND() sur une seule table... mais là :s.

    Merci d'avance pour vos aides!

  2. #2
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    je crois savoir que la fonction rand() n'est qu'une fonction pseudo aléatoire, cad que si tu lui demande d'afficher 5 nombres entre 1 et 50, elle va les prendre au hasard mais si tu relance plusieurs fois la meme routine, tu auras toujours les meme 5 nombres...

    Par contre, je ne saurais te guider vers une fonction vraiment aléatoire...

    ++
    JC

Discussions similaires

  1. Selection multi table avec filtre
    Par curumo dans le forum Requêtes
    Réponses: 6
    Dernier message: 20/11/2009, 23h16
  2. update d'un champ avec select multi-table
    Par maxvador dans le forum Hibernate
    Réponses: 1
    Dernier message: 23/09/2009, 11h54
  3. Réponses: 9
    Dernier message: 05/02/2008, 14h53
  4. SELECT multi tables
    Par Rocou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/07/2007, 09h53
  5. Modification de champs issus d'un select multi table
    Par plancade dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/06/2007, 16h25

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