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 :

Afficher tous les champs même vides


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai Avatar de tuxdiver
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2015
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2015
    Messages : 39
    Points : 19
    Points
    19
    Par défaut Afficher tous les champs même vides
    Bonjour,

    Je cherche à faire un bilan de formation
    j'ai une table t_agent avec tout le personnel
    une table t_form_temps avec le détail du temps de formation pour chaque thème issu de t_form_theme
    j'ai créé une requête croisée qui m'affiche en en-tête de ligne les thèmes, en en-tête de colonne les agents et en réponse le temps de formation


    la requête ne sélectionne que les agents ayant suivi une formation et que les thèmes ayant été suivis...
    je souhaiterai afficher tous les thèmes et tous les agents afin de mettre en évidence, éventuellement par couleur, qui n'a pas fait quoi

    j'ai lu sur les jointure externes, les codes sql ... et je me suis perdu

    merci d'avance pour vos pistes

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 359
    Points : 23 829
    Points
    23 829
    Par défaut
    Bonjour.

    Access ne peut pas deviner de l'information qui n'est pas là ... donc il faut qu'elle y soit.

    Pour illustrer cela je vais supposer que tu as une source de données du type :
    • clefPersonne
    • ClefFormation
    • TempsFormation


    La 1ère solution est la plus "brutale", elle consiste à créer un produit croisé entre la table des personnes et la table des formations.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select tblPersonn.Clef as ClefPersonne, tblFormation.Clef as ClefFormation, 0 as TempsFormation form tblPersonne, tblFormation

    une fois cela fait tu peux ajouter le résultat de ta requête à ta source de données (par ajout dans une table temporaire ou requête Union).
    On peut limiter le nombre d'enregistrement généré en n'ajoutant que ceux qui sont manquants dans la source actuelle.

    Une méthode légèrement plus subtile si avoir une ligne et colonne Vide n'est pas un problème est de faire 2 requêtes

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select tblPersonn.Clef as ClefPersonne, null as ClefFormation, 0 as TempsFormation form tblPersonne, tblFormation
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select null as ClefPersonne, tblFormation.Clef as ClefFormation, 0 as TempsFormation form tblPersonne, tblFormation

    une fois cela fait tu peux ajouter le résultat de tes requêtes à ta source de données (par ajout dans une table temporaire ou requête Union).

    Cela permet de diminuer le nombre d'enregistrements générés artificiellement.

    Enfin une troisième méthode est d'utiliser le produit croisé comme requête maitresse et d'aller pécher l'information voulue dans la source de données.

    rPesronneFormation :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select tblPersonn.Clef as ClefPersonne, tblFormation.Clef as ClefFormation form tblPersonne, tblFormation

    puis de faire un requête qui va relier rPersonneFormation à tes données avec une jointure du type tout ceux de la 1ère table et seulement ceux de la 2nde table.

    Quand on fait un produit croisé, il faut faire attention à taille de ta BD. Une BD Access ne peut pas dépasser 2 Go et Access fait des choses étranges quand tu t'approches de cette limite.

    A+

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2016
    Messages : 13
    Points : 9
    Points
    9
    Par défaut autre méthode si la base est monoposte monoutilisateur
    Perso (si la base fonctionne en mono utilisateur monoposte)
    je passe par l'alimentation d'une table temporaire que j'ai créé avant (je n'aime personnellement pas la requête création de table)
    qui reprend tous les champs qui m'interresse
    1 requête de purge de la table temporaire (delete * from matabletemporaire
    2 ajout de tout les personnels
    3 mise à jour avec les informations en ma possession
    4 création des requetes sur la table temporaire

    l'avantage cela permet de voir les étapes intermédiaires et le contenu de ma table
    avant de faire des requetes croisées dynamiques au final

    Petite astuce, mettre dans la table temporaire un champ "JeCOMPTE" valeur à 1 par défaut
    très pratique ensuite pour faire les sommes dans les requêtes

    Bonne journée
    PapyFrenchie

Discussions similaires

  1. [MySQL] afficher tous les champs de la base de données
    Par cotede2 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/06/2009, 02h56
  2. Réponses: 10
    Dernier message: 17/04/2009, 17h19
  3. [MySQL] Comment afficher tous les champs d'une table?
    Par Nibor dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/11/2006, 20h20
  4. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31
  5. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 17h11

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