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 :

Recherche par requete avec des select


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 47
    Points
    47
    Par défaut Recherche par requete avec des select
    Bonjour à tous,

    J'ai actuellement un formulaire contenant plusieurs select me permettant de rechercher dans ma base de donnée un certain objet en fonction de sa marque, catégorie et gamme:
    Code html : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <form method="get" name="recherche_categories" action="/frontend_dev.php/osiatech">
        <fieldset>
            <legend>Recherche une pièce par catégorie</legend>
                <select name="marques">
                    <option value="Tous">Tous</option>
                    <option value="2">COMPAQ</option>
                    <option value="3">DELL</option>
                    <option value="1">HP</option>
                    <option value="4">IBM</option>
                </select>
     
                <select name="gammes">
                    <option value="Tous">Tous</option>
                    <option value="1">Gamme 1</option>
                    <option value="2">Gamme 2</option>
                    <option value="3">Gamme 3</option>
                    <option value="4">Gamme 4</option>
                    <option value="5">Gamme 5</option>
                </select>
     
                <select name="categories">
                    <option value="Tous">Tous</option>
                    <option value="4">Ecran</option>
                    <option value="5">Imprimante</option>
                    <option value="2">NoteBook</option>
                    <option value="3">PDA</option>
                    <option value="1">Poste de travail</option>
                    <option value="6">Routeur</option>
                </select>
        </fieldset>
        <input name="submit" value="Rechercher" type="submit">
     
    </form>

    Cependant un même objet peut avoir plusieurs gammes donc j'ai une table de jointure qui a comme champ index_gamme et index_catalogue. Dans cette table, le champs index_catalogue a pour valeur l'id des objet de la table catalogue auquel on attribut une ou plusieurs gammes.

    Je souhaiterais que ma requête me permettent d'afficher tous les objet de la table catalogue ayant pour index_marque l'id selectionné dans le select marques, pour index_famille, l'id selectionné dans le select catégories et tous les id qui ont pour index_gamme dans la table jointure_gammes celui selectionné dans le select gammes.

    Pour le moment j'ai fait cette requete mais qui ne répond pas parfaitement à mon besoin:
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
    FROM catalogue c 
    LEFT JOIN jointures_gammes j ON c.id = j.index_catalogue 
    WHERE (c.index_marque = 3 AND c.index_famille = 1 AND j.index_gamme = 1)

    J'ai en effet un problème puisqu'elle ne prend pas en compte ma restriction sur la gamme...
    Merci de votre aide

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Remontez le filtre de la table liée de façon externe au niveau de la jointure.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 82
    Points : 47
    Points
    47
    Par défaut
    Avec cette requete:
    Code mysql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT * 
    FROM catalogue c 
    LEFT JOIN jointures_gammes j ON c.id = j.index_catalogue AND (j.index_gamme = 1) 
    WHERE (c.index_marque = 3 AND c.index_famille = 1)

    J'ai toujours le même problème...

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 28/05/2013, 13h05
  2. Réponses: 0
    Dernier message: 03/04/2013, 14h04
  3. Requete insertion avec des select
    Par miketidy dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/05/2008, 10h36
  4. Creer une requete avec des LEFT JOIN et des GRO
    Par donbuz dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/09/2004, 15h53
  5. Requete avec des décimales
    Par Sandrine75 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/06/2003, 10h18

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