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 multicritères sur plusieurs tables


Sujet :

Langage SQL

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 26
    Par défaut Recherche multicritères sur plusieurs tables
    Bonsoir,
    J'ai un formulaire de recherche multicritères contenant des boutons radio et des cases à cocher, il va piocher dans plusieurs tables pour afficher les résultats selon le choix des critères.
    J'ai une table "appartements", une table "maisons", une table "transactions" (Acheter ou Louer), une table "themes" (appartement, maison) et une table "pieces" (T1, T2, T3, T4, T5).
    Les tables "appartements" et "maisons" contiennent toutes les deux des clès étrangères pour faire le lien avec les autres table, à savoir, "transactionID", "rubriqueID" et "piecesID"
    Ce que je veut, c'est l'orsqu'on coche par exemple le bouton Acheter, la case Appartement et la case T1, il va questionner la table appartement pour sortir les critères demandés, la même chose si on coche la case maison.
    Voilà le code que j'ai écrit et qui ne marche pas encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT r.theme, a.Reference,  p.nombre, t.ID
    FROM transactions t  INNER JOIN appartements a ON a.transactionID=t.ID
    WHERE a.transactionID=colbien  INNER JOIN rubriques r ON a.rubriqueID=r.ID WHERE a.rubriqueID=coltheme INNER JOIN pieces p ON a.piecesID=p.ID WHERE a.piecesID=colnombre
    union ALL
    SELECT r.theme, m.Reference,  p.nombre, t.ID
    FROM transactions t  INNER JOIN maisons m ON m.transactionID=t.ID
    WHERE m.transactionID=colbien  INNER JOIN rubriques r ON m.rubriqueID=r.ID WHERE m.rubriqueID=coltheme INNER JOIN pieces p ON m.piecesID=p.ID WHERE m.piecesID=colnombre
     
    colbien=$_GET['transactionID']
    coltheme=$_GET['rubriqueID']
    colpieces[$_GET['piecesID']
    Merci

  2. #2
    Membre expérimenté
    Inscrit en
    Janvier 2012
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Janvier 2012
    Messages : 145
    Par défaut
    Juste comme ça, le champ Reference (pour M et A) est il bien défini à l'identique? Sinon quelle est la sortie et quel est l'éventuel message d'erreur?

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 450
    Par défaut
    Bonjour,
    La requête ne "fonctionne" pas car elle est syntaxiquement incorrecte.
    Dans une jointure, il faut utiliser ON, et non WHERE pour spécifier les conditions:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    SELECT r.theme, a.Reference,  p.nombre, t.ID
    FROM transactions t
    INNER JOIN appartements a ON a.transactionID=t.ID and a.transactionID=colbien
    INNER JOIN rubriques r ON a.rubriqueID=r.ID and a.rubriqueID=coltheme
    INNER JOIN pieces p ON a.piecesID=p.ID and a.piecesID=colnombre
    union ALL
    ...

    Je ne sais pas quel langage tu utilises, mais je pense que ce dernier peut te renvoyer le message d'erreur retourné par la base de données. Celui-ci t'aurai certainement indiqué la cause de l'erreur.

    Tatayo.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 26
    Par défaut
    Merci beaucoup pour la réponse. En faite je n'est pas de message d'erreur simplement rien ne s'affiche sur ma page résultats.
    j'ai modifié mon code entre temps, j'obtiens des résultats, par contre si je coche appartements et maisons en même temps il m'affiche que les résultats de maisons.
    pareil, quand je coche T1, T2 ensemble, il m'affiche que les T2.
    Voilà le code que j'ai utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT a.rubriqueID , a.transactionID, a.piecesID, a.Reference,  a.Libelle FROM appartements a WHERE a.rubriqueID =coltheme AND a.transactionID=colbien AND a.piecesID=colnombre UNION ALL  SELECT m.rubriqueID , m.transactionID, m.piecesID, m.Reference, m.Libelle
    FROM maisons m
    WHERE m.rubriqueID =coltheme AND m.transactionID=colbien AND m.piecesID=colnombre
    Je vais tester ton code pour voir ce que ca donne et je reviens.
    Merci

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 26
    Par défaut
    Je reviens vers toi tatayo, voilà le message d'erreur après avoir testé ton code:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 30' at line 3
    Je suis sur php Myadmin version 5.0.5

  6. #6
    Expert confirmé
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 450
    Par défaut
    Sans la requête ni le code qui l'utilise, difficile de savoir ce qui ne va pas.
    Par exemple l'erreur fait mention de la clause Limit, que je ne vois nul part...
    A quoi correspond colbien, colnombre, coltheme ? Si ce sont des critères renseignés par l'utilisateur, que contiennent-ils quand l'utilisateur ne renseigne rien ?

    Tatayo.

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

Discussions similaires

  1. [MySQL] Recherche multicritères sur plusieurs tables
    Par bili31 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 07/03/2012, 20h17
  2. [MySQL] recherche multicritères sur plusieurs table
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/11/2007, 17h42
  3. recherche multicritères sur deux tables
    Par amélie22 dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2006, 11h59
  4. recherche multicritères sur plusieurs tables
    Par amélie22 dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2006, 09h48
  5. Recherche multicritère sur plusieurs tables
    Par Nabouille dans le forum Access
    Réponses: 3
    Dernier message: 12/04/2006, 18h39

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