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 :

Requette avec plusieurs critères sur plusieurs tables


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut Requette avec plusieurs critères sur plusieurs tables
    Salam a tous,

    Je vous présente le problème:

    j'ais 4 tables dans ma base :
    -personne(code,nom,prenom,spe_code,qua_code)
    -specialite(code,nom)
    -ville(code,nom)
    -quartier(code,nom,ville_code)

    avec : spe_code,qua_code,ville_code sont des clés étrangères


    et je veux rechercher toutes les 'personne' qui correspondent a au moin une seulle des données que je précise

    par exemple : si je cherche les personnes qui abitent dans 'paris' et ceux dans 'london', et qui ont comme spécialité 'Ouvrier' et ceux qui ont comme nom 'karim'...

    je veux avoir par exemple la liste suivante :

    ville.nom |||| personne.prenom |||| specialite.nom
    --------------------------------------------------
    paris |||||| karim |||||| ouvrier
    london |||||| xxxx |||||| ouvrier
    london |||||| xxxx |||||| xxxx
    xxxxx |||||| karim |||||| xxxx


    Quelque chose comme ça



    j'ais penser a récupéré la liste des personnes pour chaque critère, et les rassembler
    Mais avec ca je ne pourrais pas dire qu'un des résultats correspend le plus avec ce que je cherche


    Et merci d'avance

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Tu fais une requête avec jointure interne entre toutes les tables, puis dans la clause WHERE, tu sépares les conditions par des OR au lieu de AND.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT v.nom, p.prenom, s.nom
    FROM ville v
    INNER JOIN quartier q ON v.code = q.ville_code
    INNER JOIN personne p ON q.code = p.qua_code
    INNER JOIN specialite s ON p.spe_code = s.code
    WHERE v.nom in ('paris', 'london') OR p.prenom = 'karim' OR s.nom = 'ouvrier'
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre régulier Avatar de kha_yassine
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 76
    Points
    76
    Par défaut
    Merci beaucoup ced,

    Je voudrais maintenant faire un tri sur ce tableau:

    de la personne qui correspand avec le plus de critères que j'ais donner ,
    à la personne qui a au moin une seulle information correcte

    Et merci d'avance

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Là, ça se complique .
    Je n'ai rien trouvé de mieux que quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT v.nom, p.prenom, s.nom,
    case when v.nom IN ('paris', 'london') then 1 else 0 end
    + case when p.prenom = 'karim' then 1 else 0 end
    + case when s.nom = 'ouvrier' then 1 else 0 end as nb_critere
    FROM ville v
    INNER JOIN quartier q ON v.code = q.ville_code
    INNER JOIN personne p ON q.code = p.qua_code
    INNER JOIN specialite s ON p.spe_code = s.code
    WHERE v.nom IN ('paris', 'london') OR p.prenom = 'karim' OR s.nom = 'ouvrier'
    order by nb_critere desc
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. [XL-2003] Recherche de plusieurs critères sur plusieurs lignes puis addition du nombre
    Par iIncoming dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/03/2014, 05h45
  2. Recherche de plusieurs résultats sur plusieurs critères
    Par Chen norris dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/08/2011, 17h18
  3. Selectionner une ligne avec un max sur plusieurs critères
    Par achestyx dans le forum Développement
    Réponses: 2
    Dernier message: 31/03/2011, 10h53
  4. Select avec 2 critères sur des tables reliées
    Par beyo dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/12/2010, 15h03
  5. jointure, mais avec un critère (?) sur la table jointe
    Par Jerome218 dans le forum Requêtes
    Réponses: 4
    Dernier message: 25/05/2009, 22h11

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