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 et SQL. Discussion :

Requête sur le même champ plusieurs fois. [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Homme Profil pro
    Cartographie
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Cartographie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 15
    Points
    15
    Par défaut Requête sur le même champ plusieurs fois.
    Bonjour,

    N'étant pas un crack, et n'ayant rien trouvé sur le forum qui puisse m'aiguiller, je vous soumets ce petit cas :

    Voilà, j'ai une table "Membres" de quatre champs "Nom", "Prénom", "Age" et "Région".

    J'aimerais savoir s'il est possible de faire une seule requête afin de regrouper les membres de moins de 50 ans dans une colonne ainsi que ceux de plus de 50 ans dans une autre ?

    Je ne parviens pas, dans le QBE à placer deux fois le même champ avec des critères différents, j'obtiens des colonnes vides en sortie.

    Merci beaucoup pour l'aide que pourrez m'apporter.

    A bientôt.

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 440
    Points : 43 082
    Points
    43 082
    Par défaut
    Tu peux faire 2 requêtes et les concaténer
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    bonjour,

    cette requête répondrait t-elle à tes attentes ?

    en posant une condition tu retournes dans chacune des colonnes la concaténation du nom et prénom si la condition est vraie, sinon une chaîne vide.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT IIf([age]<50,[Nom] & " " & [Prénom],"") AS Moins50ans, IIf([age]>=50,[Nom] & " " & [Prénom],"") AS Plus50ans, Membres.Région
    FROM Membres;

    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  4. #4
    Membre à l'essai
    Homme Profil pro
    Cartographie
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Cartographie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Bonjour Chrtophe et Jimbolion,

    Merci beaucoup pour vos promptes réponses.

    Chrtophe, excuse mon ignorance mais comment fait-on pour concaténer 2 requêtes ? Avec l'instruction UNION ?

    Jimbolion, je me rapproche de ce que je recherche avec proposition. Néanmoins, et c'est de ma faute car je me suis mal exprimé, j'aurais voulu obtenir le nombre de membres en-dessous et au-dessus de 50 ans, et non un affichage de leur nom et prénom. Or, lorsque je lance la requête, et que je clique sur le bouton totaux, ceux-ci sont faussés par la chaîne vide, qui est comtabilisée, aussi je me retrouve avec deux totaux égaux alors qu'ils ne devraient pas l'être. Y aurait-il une solution pour cela ? Pardon pour mon manque de précision.

    En tout cas, merci à vous deux pour votre précieuse aide.

    Bien cordialement.

  5. #5
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Mickey7312,

    En adoptant la même stratégie, une condition sur chaque âge pour chaque colonne renvoie 1 ou 0. Une requête sommant chaque colonne permet d'obtenir le résultat souhaité :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Sum(IIf([age]<50,1,0)) AS Moins50ans, Sum(IIf([age]>=50,1,0)) AS Plus50ans
    FROM Membres;

    Bonne continuation

    JimBoLion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  6. #6
    Membre à l'essai
    Homme Profil pro
    Cartographie
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Cartographie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Jimbolion,

    Merci pour tes lumières, j'avais en effet essayé ce que tu me dis, sauf que j'ai fait l'erreur de mettre les valeurs 0 et 1 entre guillemets, la somme restait donc inchangée et toujours problématique.

    Problème résolu, merci encore de t'attarder sur des cas d'écoles j'imagine.

    Bien cordialement.

  7. #7
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Mickey7312,

    eh oui le typage des données est essentielle.

    N'oublie pas de mettre résolu

    Bonne continuation

    jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  8. #8
    Membre à l'essai
    Homme Profil pro
    Cartographie
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Cartographie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Jimbolion,

    Juste une dernière petite question stp : histoire d'affiner ma requête, j'aimerais ajouter le champ "Sexe" de valeur numérique 1 pour les hommes et 2 pour les femmes de manière à obtenir le sexe en en-tête de ligne et les tranches d'âge en en-tête de colonne. Mais j'obtiens une erreur lorsque je glisse le champ sexe avec l'opération regroupement ou somme dans le QBE.

    Le message dit : "Vous avez essayé d'exécuter une requête ne comprenant pas l'expression spécifiée... comme une partie de la fonction d'agrégat.

    Mais que cela peut-il bien signifier ?

    Merci infiniment Jimbolion pour ton aide.

  9. #9
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    Mickey7312

    cela correspond t'il à tes attentes ?

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Sum(IIf([age]<50,1,0)) AS Moins50ans, Sum(IIf([age]>=50,1,0)) AS Plus50ans, Membres.Sexe
    FROM Membres
    GROUP BY Membres.Sexe;

    jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  10. #10
    Membre à l'essai
    Homme Profil pro
    Cartographie
    Inscrit en
    Juillet 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Cartographie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 15
    Points : 15
    Points
    15
    Par défaut
    Bonjour Jimbolion,

    Extraordinaire, tu est trop fort !

    J'avais tenté cela, mais je n'avais pas mis les parenthèses Sum() au bon endroit.

    Merci infiniment, je vais pouvoir bien avancer dans mon projet... j'espère.

    Merci encore de prendre la peine d'aider des débutants tels que moi.

    Bien à toi.

  11. #11
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/01/2009, 20h49
  2. Requête d'un même champ sur deux tables
    Par laipreu dans le forum Requêtes
    Réponses: 1
    Dernier message: 18/09/2008, 13h38
  3. Requête avec conditions multiples sur le même champ
    Par skerdreux dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/06/2008, 19h15
  4. Requête: Afficher un champ plusieurs fois
    Par shirya dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/06/2008, 18h10
  5. Réponses: 4
    Dernier message: 26/04/2006, 14h02

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