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 :

select moitié moitié


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 38
    Par défaut select moitié moitié
    Bonjour à tous,

    Une petite question SVP, j'ai une requête avec un Rand() que je limite à 12 résultats, cependant je voudrais sur les 12 résultats qu'elle m'affiche 6 hommes et 6 femmes et non 12 résultats d'un mélange aléatoire.

    J'ai fait celle ci mais je ne suis pas convaincu du résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $sql = 'SELECT u.user_id, u.username, u.user_pic
    FROM ' . USERS_TABLE . ' u, ' . PROFILE_DATA_TABLE . ' f
    WHERE u.user_pic !=""
    AND u.user_id = f.user_id AND (f.vous = "femme" OR f.vous = "homme")
    ORDER BY RAND()';
    $result = $db->sql_query_limit($sql, 12);
    Pouvez-vous m'orienter svp !

  2. #2
    Membre confirmé
    Profil pro
    None
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : None

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    $sql = '
    SELECT * FROM
    ((SELECT u.user_id, u.username, u.user_pic
    FROM ' . USERS_TABLE . ' u, ' . PROFILE_DATA_TABLE . ' f
    WHERE u.user_pic !=""
    AND u.user_id = f.user_id AND f.vous = "homme"
    ORDER BY RAND()
    LIMIT 6)
    UNION
    (SELECT u.user_id, u.username, u.user_pic
    FROM ' . USERS_TABLE . ' u, ' . PROFILE_DATA_TABLE . ' f
    WHERE u.user_pic !=""
    AND u.user_id = f.user_id AND f.vous = "femme"
    ORDER BY RAND()
    LIMIT 6))
    ORDER BY RAND()
    '
    devrait répondre à ton besoin.

    Si tu désires vraiment que le LIMIT soit externe à ta requête, alors il faudra passer par 2 requêtes, une pour les hommes, une pour les femmes, enchainer avec un array_merge sur les 2 tableaux de résultat avant un schuffle.

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 38
    Par défaut
    Ok, merci beaucoup, je ne pensais pas passer par une requête imbriquée je pensais qu'il existait une fonction qui séparait le resulat directement en une seule requête .

    merci encore de la piste. Bonne continuation.

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

Discussions similaires

  1. gestionnaire fonctionnant à moitié
    Par Pallas4 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 02/05/2006, 18h23
  2. barrettes de RAM reconnues à moitié
    Par Swoög dans le forum Composants
    Réponses: 17
    Dernier message: 01/05/2006, 23h07
  3. Fenêtre base de données à moitié cachée
    Par Tententai dans le forum IHM
    Réponses: 2
    Dernier message: 09/12/2005, 11h06
  4. Requete avec une sous-requete... Ne fonctionne qu'a moitie..
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 18/08/2003, 09h54
  5. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 15h30

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