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 :

[Teradata] Résultats à critères semblables


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [Teradata] Résultats à critères semblables
    Bonjour à tous,

    Je m'excuse par avance du niveau de cette question.

    Je précise que j'utilise TERADATA.

    Imaginons la BDD suivante :

    EMPLOYES_DB

    Prénom Genre Age
    Johnny H 24
    Vanessa F 21
    Hervé H 23
    Camille F 25
    Daniel H 24
    Alexandre H 22

    Je voudrais obtenir tous les employés similaires aux critères de Johnny à savoir Johnny et Daniel.
    Je précise que je ne connais que le prénom de Johnny (pas son genre et pas son age).

    J'ai utilisé des sous-requêtes et écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT *
    FROM EMPLOYES_DB
    WHERE Genre in (
         select Genre
         from EMPLOYES_DB
         where Prénom = 'Johnny'
    )
    and Age in (
         select Age
         from EMPLOYES_DB
         where Prénom = 'Johnny'
    )
    Mais si la liste des critères s'allonge c'est ingérable... Je sais qu'il y a forcément mieux et que c'est sans doute très facile.
    Pourriez-vous m'aiguiller svp ?

    Je vous en remercie par avance.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 344
    Points : 39 742
    Points
    39 742
    Billets dans le blog
    9
    Par défaut
    Bonsoir

    Pourquoi faire simple quand on peut faire compliqué

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT T2.numero
         , T2.prenom
         , T2.nom
         , T2.genre
         , T2.date_naissance
    FROM EMPLOYES_DB T1
    inner join
         EMPLOYES_DB T2
       on T2.genre = T1.genre
      and T2.age   = T1.age
      and T2.xxxx  = T1.xxxx
    WHERE T1.numero = 123456 -- le numéro de johnny
    À noter : l'âge ne devrait pas être une colonne de la table. Il faut stocker la date de naissance qui est invariante contrairement à l'âge et calculer celui-ci quand vous en avez besoin

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour cette réponse.
    Il suffisait donc de faire correctement la jointure !
    L'âge était simplement un exemple au hasard mais merci pour cette précision si un jour je dois créer moi même un table avec cette donnée.
    Excellente soirée.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Une autre solution, sans jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      select Prenom
           , Genre
           , Age
        from EMPLOYES_DB
     qualify Genre = max(case Prenom when 'Johnny' then Genre end) over()
         and Age   = max(case Prenom when 'Johnny' then Age   end) over();

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 14/08/2006, 12h47
  2. exporter le résultat d'une recherche multi-critère ?
    Par Tetsuotil dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 18/07/2006, 17h39
  3. Réponses: 2
    Dernier message: 07/07/2006, 10h00
  4. Afficher un résultat sur deux critères du même champ
    Par julien6660 dans le forum Access
    Réponses: 2
    Dernier message: 20/04/2006, 11h30
  5. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 11h00

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