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 :

Elargissement d'une requete si pas assez de résultat


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut Elargissement d'une requete si pas assez de résultat
    Bonjour, voila je vais tenter d'expliquer ma question avec un exemple

    J'ai une table avec 3 colonnes : id - categorie - departement

    je voudrai faire un SELECT de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT id, categorie, departement 
    FROM table 
    WHERE categorie = 10 
    AND departement = 75
    LIMIT 0,4
    Mon probleme c'est que je n'ai pas obligatoirement 4 réponses qui repondent à ce critère. Je voudrai savoir si il est possible en 1 seule requette de dire que : si il trouve pas 4 réponses avec cette requette il peut élargir pour les département à * voir une autre liste de département...

    J'espère m'ettre bien fait comprendre et en tout cas merci de vos future réponse

    P.S. Meci au modo d'avoir rajouté les balises code, je ferai attention la prochaine fois

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    Je ne comprend pas quelque chose, si tu peux avoir plus de 4 résultats pourquoi ne pas faire une simple requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, categorie, departement 
    FROM TABLE 
    WHERE categorie = 10 
    AND departement = 75;

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut
    Citation Envoyé par lanfeust42 Voir le message
    Je ne comprend pas quelque chose, si tu peux avoir plus de 4 résultats pourquoi ne pas faire une simple requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT id, categorie, departement 
    FROM TABLE 
    WHERE categorie = 10 
    AND departement = 75;
    J'ai du mal me faire comprendre alors. Je veux 4 résultats meme si il y'a + de réponse. En fait c'est pour faire une suggestion d'articles (dans la meme catégorie) situé dans une barre sur la droite de mon site.

    J'affiche un article qui fait partie d'une catégorie et dans ma base je veux en prendre 4 autres aux hasard (avec la meme catégorie et le meme département). Il se peut que effectivement j'ai 50 réponses possibles, mais déja je ne veux en afficher que 4 et surtout si je n'ai pas 4 réponse pour ce département je veux élargir ma recherche aux autres départements tout en restant dans la meme catégorie...

  4. #4
    Membre Expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    je ne suis pas sûr que MySQL accepte les clauses ORDER BY et LIMIT dans les SELECT joints par UNION, a fortiori dans une sous-requête.
    Pour le savoir, tu peux essayer cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT *
    FROM (SELECT t1.id, t1.categorie, t1.departement 
    FROM TABLE t1
    WHERE t1.categorie = 10 
    AND t1.departement = 75
    ORDER BY RAND() LIMIT 4
    UNION
    SELECT t2.id, t2.categorie, t2.departement 
    FROM TABLE t2
    WHERE t2.categorie = 10 
    AND t2.departement <> 75
    ORDER BY RAND() LIMIT 4) LIMIT 4
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    Par défaut
    ok, vais test ca d'ici 15 mn je te tiens au courant mais en tout cas merci pour ton aide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 29
    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
    SELECT *
    FROM (SELECT t1.id, t1.categorie, t1.departement 
    FROM TABLE t1
    WHERE t1.categorie = 10 
    AND t1.departement = 75
    ORDER BY RAND() LIMIT 4
    UNION
    SELECT t2.id, t2.categorie, t2.departement 
    FROM TABLE t2
    WHERE t2.categorie = 10 
    AND t2.departement <> 75
    ORDER BY RAND() LIMIT 4) T LIMIT 4
    J'ai du rajouter le T (histoire de ALIAS) et ca marche mieux... par contre le ORDER BY RAND() n'est effectivement pas accepté Vais continuer de chercher ...

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

Discussions similaires

  1. Remplissage DATAGRID avec une requete et pas la table
    Par nabileon dans le forum VB.NET
    Réponses: 8
    Dernier message: 14/02/2013, 20h13
  2. [MySQL] Une requete qui ne retourne aucun résultats
    Par amerex dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/01/2010, 17h46
  3. [LINQ] - créer une requete dynamique (pas en dur)
    Par DonJR dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 08/06/2007, 10h30
  4. [LINQ] - créer une requete dynamique (pas en dur)
    Par DonJR dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 08/06/2007, 10h30
  5. [MySQL] empecher une requete de donner le mm résultat
    Par Corben dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/02/2006, 09h21

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