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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 38
    Points : 26
    Points
    26
    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 régulier
    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
    Points : 80
    Points
    80
    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
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 38
    Points : 26
    Points
    26
    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