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

Développement SQL Server Discussion :

Requête dans une seule table


Sujet :

Développement SQL Server

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Points : 443
    Points
    443
    Par défaut Requête dans une seule table
    Bonjour,

    J'ai une table société avec les attributs nom et type.

    Dans cette table j'ai des sociétés qui peuvent avoir dans une première ligne un type client et dans une deuxième ligne le type prospect.

    Par exemple une première ligne : société X avec type client et une deuxième ligne : société X avec type prospect

    Je voudrai faire sortir toutes les sociétés qui possèdent uniquement et en même temps le type client et type prospect.

    Est-ce-que c'est possible ?

    J'ai essayé une requête simple et dans la clause where j'ai mis where comp_type ='Client' and comp_type='Prospect' mais ça ne marche pas. J'ai zéro ligne.

    Est-ce-qu'il y a une autre solution ?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    Comment sais-tu qu'il s'agit de la même société, en te servant du nom? si oui il y a un problème de conception, il faudrait une table société d'une part. et une table dédié pour les société et leur type d'autres part.
    Quel est la structure de ta table, les clés, les index..., les contraintes d'unicité.

    Tel que je comprends ta modélisation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Select nom
    from societe sc
    inner join
    societe sp
    on sc.nom=sp.nom
    where sc.comp_type ='Client' 
    and sp.comp_type='Prospect'
    Mais je t'invite fortement à changer de modélisation.
    Cordialement
    Soazig

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Mai 2011
    Messages : 790
    Points : 443
    Points
    443
    Par défaut
    c'est un ERP... et donc c'est la conception du produit !

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Points : 1 199
    Points
    1 199
    Par défaut
    Bonjour,
    c'est un ERP... et donc c'est la conception du produit !
    répond à la proposition de changer de modélisation, mais ne réponds pas à la question
    Quel est la structure de ta table, les clés, les index..., les contraintes d'unicité.
    et n'indique pas non plus si la proposition que j'ai faite convient.
    Il faudrait aussi savoir si comp_type peut avoir d'autre valeur que client et prospect.
    Bonne journée
    Soazig

  5. #5
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    En faisant une réquète à base de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT S.nom
    FROM dbo.societe S 
    WHERE EXISTS(SELECt * FROM dbo.societe SS WHERE SS.nom=S.nom SS.comp_type='Client')
        AND EXISTS(SELECt * FROM dbo.societe SS WHERE SS.nom=S.nom SS.comp_type='Prospect')
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 763
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 763
    Points : 52 554
    Points
    52 554
    Billets dans le blog
    5
    Par défaut
    Ou encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom
    FROM   societe 
    WHERE  comp_type In ('Client', 'Prospect')
    GROUP  BY nom
    HAVING COUNT(DISTINCT comp_type) = 2
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Par abus de conscience, j'aurai même écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT nom
    FROM   societe 
    WHERE  comp_type In ('Client', 'Prospect')
    GROUP  BY nom
    HAVING COUNT(DISTINCT comp_type) > 1
    @++

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/01/2014, 18h45
  2. Réponses: 4
    Dernier message: 20/05/2010, 12h28
  3. Réponses: 5
    Dernier message: 21/06/2007, 08h49
  4. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19
  5. Regrouper 3 requêtes dans une seule
    Par LadyArwen dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/06/2003, 09h32

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