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 :

Selection de plusieurs lignes (AND) sur une seule colonne ?


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Selection de plusieurs lignes (AND) sur une seule colonne ?
    Bonjour

    Je rencontre un gros souci qui pourtant me paraissait si simple au départ.

    Ma base gère des sociétés qui ont adhéré à un ou plusieurs de nos services (liste des services nom fixe)

    Pour cela j'ai créer trois tables:

    Societes Services adhesion
    num num num_service
    nom service num_societe
    ....

    en admettant que j'ai deux services, ma table services contient les enregistrements :
    1 Service compta
    2 Service paie

    La société 1 est adhérente aux deux services et la société 2 est adhérente seulement au premier service.
    J'ai donc une table adhesion qui contient les entrées :
    num_service num_soc
    1 1
    2 1
    1 2

    Comment je fait pour retrouver le nom des sociétés adhérentes au service 1 et au service 2 soit dans mon exemple la société 1.

    Je sèche complétement. J'arrive a retrouver les sociétés adhérente à l'un ou l'autre des service grâce au IN ou en multipliant les OR mais pas moyen de trouver les sociétés adhérentes à plusieurs services.
    Est ce qu'une solution simple m'échappe, est ce que je me suis planté dans le schéma de ma base pour gérer un tel cas?

    mes pistes pour le moment était une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT soc.* 
    FROM societes AS soc 
    LEFT JOIN adhesion AS a 
    ON (soc.num=s.num_societe) 
    WHERE s.num_service=1 
    AND s.num_service=2 
    ORDER BY soc.num
    Seulement difficile de trouver une ligne ou le s.num_service=1 et 2 en même temps. D’où l'erreur, mais comment faire ????

    Merci d'avance je suis perdu et m'arrache les cheveux.

    Greg

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonsoir,

    Remarquez, déjà avec un alias faux, cela va être compliqué....

    « Je ne cherche pas à connaître les réponses, je cherche à comprendre les questions. »
    - Confucius -

    Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
    Tous les cours Office
    Solutions d'Entreprise



  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Oui en effet, mais je te rassure dans ma requête l'alias n'est pas faux.
    Enfin à tête reposé voici la requête sans erreur d'alias.

    J'édite mon message pour vous donner la solution trouvé.
    En fait je recherche par un IN toutes les sociétés adhérents aux services demandés. Et je ne prend que les sociétés aparaissant autant de fois que qu'il y a de services.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT s.* 
    FROM societes AS soc 
    LEFT JOIN adhesion AS adh 
    ON (soc.num=adh.num_societe) 
    WHERE adh.num_service IN (1,2) 
    ORDER BY soc.num
    HAVING count(adh.num_societe)=2
    En espérant que cela serve à d'autres et que ça vous évite de perdre autant de temps que j'en ai perdu.

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

Discussions similaires

  1. [XL-2010] Mettre plusieurs lignes excel en une seule ligne
    Par baazouzia dans le forum Excel
    Réponses: 1
    Dernier message: 18/04/2014, 02h11
  2. [11g] Charger plusieurs lignes à partir d'une seule
    Par raz2008 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 02/12/2013, 15h55
  3. Réponses: 1
    Dernier message: 30/01/2012, 10h50
  4. [XL-2000] Transposer plusieurs lignes sur une seule colonne
    Par ceuce dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 10/04/2009, 11h11
  5. Afficher plusieur colonnes sur une seule colonne ?
    Par Interruption13h dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2007, 16h57

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