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 : regrouper les champs date de plusieurs tables en un seul


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Requête : regrouper les champs date de plusieurs tables en un seul
    Bonjour à tous !

    Je dispose des 3 tables suivantes :
    Nom : Capture1.JPG
Affichages : 485
Taille : 23,5 Ko

    J'aimerais regrouper toutes ces données ensemble. L'idée, c'est que pour chaque date existante (donc qu'elle provienne de la table Gardes, Observations ou Passages_calendrier) il y ait tous les pâturages concernés (donc pâturage issus de la table Observation ou passages_calendrier), les cheptels, la garde et le commentaire fait, sachant que certains champs peuvent être nuls ou vides.

    J'ai fait 2 requêtes union:
    - 1 qui regroupe toutes les dates (Gardes, Observations ou Passages_calendrier)
    - 1 qui regroupe tous les pâturages (Observation ou passages_calendrier)

    Et je les ai intégrés dans une requête avec les autres champs. Je n'ai pas eu le résultat voulu (je n'ai pas eu de résultats du tout ahah)

    Auriez-vous une idée/solution ?

    Belle journée !

  2. #2
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour Mélod,

    Essai cette requête union
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT Gardes.Date_garde, Gardes.Cheptel, "" as Pâturage, Gardes.Garde ,"" as Commentaire
    FROM Gardes
    UNION 
    SELECT Observations.Date_observation, "" as Cheptel,  Observations.Pâturage, "" as Garde, Observations.Commentaire
    FROM Observations 
    UNION 
    SELECT Passages_Calendreier.Date_pâturage, Passages_Calendreier.Cheptel, Passages_Calendreier.Pâturage, "" as Garde, "" as Commentaire
    FROM Passages_Calendreier 
    ORDER BY Gardes.Date_garde
    En espérant avoir compris ta demande
    Un travail qui plait est à moitié fait.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Yes ! C'est quasiment ça, merci infiniment !

    Est-ce je peux te demander un peu d'explications ? Je ne comprends pas à quoi sert la partie de code suivante : Est ce que tu pourrais me commenter les différentes parties des premières lignes par exemple et me dire ce que tu demandes à Access de faire s'il te plait ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Gardes.Date_garde, Gardes.Cheptel, "" as Pâturage, Gardes.Garde ,"" as Commentaire
    FROM Gardes
    Par exemple, je comprends que dans la table Gardes, tu sélectionnes la date de garde et le cheptel concerné. Mais après je ne comprends pas très bien parce que les champs Pâturage et Commentaire proviennent de la table Observation...

    Et ce qu'il me manque, c'est que j'aimerais regrouper les données qui sont sur le même jour et le même pâturage.
    Actuellement avec ton code, j'obtiens :
    Nom : Capture1.JPG
Affichages : 418
Taille : 15,2 Ko
    Mais comme c'est le même jour et le même pâturage, je voudrais que le commentaire et le cheptel soit sur le même enregistrement !

    Peut-être que je comprendrais mieux avec les explications !

    Merci encore !

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,
    Ce qu'il faut savoir en priorité sur une requête UNION c'est que chaque tuple (enregistrement, ligne…) renvoyé par chaque SELECT doit contenir les mêmes colonnes de même type. Si cette condition n'est pas remplie le moteur de base de données renverra une erreur.

    Dans le cas où les sources (table ou requête) de chaque SELECT de l'UNION ne contient pas les mêmes colonnes il faut les simuler.
    D'où la syntaxe :

    ici on simule une colonne Texte du nom de nomcolonne pour palier à son absence (volontaire ou non).

    Ta deuxième question :
    je comprends que dans la table Gardes, tu sélectionnes la date de garde et le cheptel concerné. Mais après je ne comprends pas très bien parce que les champs Pâturage et Commentaire proviennent de la table Observation...
    trouve sa réponse par l'explication précédente.

    La troisième demande un peu plus d'analyse, mais je pense qu'il faut faire un regroupement sur la source UNION : sauvegarde de la requête UNION en temps que requête et utilisation de celle-ci comme source dans une requête SELECT avec regroupement.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2019
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup loufab !

  6. #6
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2012
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 284
    Points : 284
    Points
    284
    Par défaut
    Bonjour Mélod,

    Tes 2 lignes montrent qu'il n'est pas possible de regrouper comme tu le souhaites :
    pour regrouper, il faut [Cheptel] ligne 1 soit égal à "Chevaux" et [Commentaire] ligne 2 égal à "Ok !"

    Bref que les lignes soient les même !

    Si tu veux, dans la requête union, tu peux indiquer que tu ne veux pas tel champ vide dans telle table, mais dans ton exemple, si tu ne veux pas que [Cheptel] soit vide, tu perds aussi le "Ok !" de [Commentaire].

    A mon niveau, je n'ai pas de solution.
    Bon courage.
    Un travail qui plait est à moitié fait.

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    à moins que je me trompe et que j'aie mal compris le besoin, je ne suis pas certain que la requête UNION soit la solution.

    Il est clair qu'il faut revoir la relation entre les tables, trouver quelle est la table principale ensuite faire les jointures qui vont donner le bon résultat.

    Par exemple, si Gardes est la table principale, il faut afficher tous les enregistrements adjacents des 2 tables "secondaires", on va donc afficher tous les enregistrements de Gardes ayant une relation avec Passage_Calendrier (jointure gauche avec Cheptel et Année) ensuite tous les enregistrements d'Observations (avec jointure gauche avec Pâturage et Année) reliés à Passages_Calendrier.
    Après, si il faut que les dates soient dans la jointure, il suffit d'ajouter les champs de date des tables respectives:

    Nom : _0.JPG
Affichages : 426
Taille : 29,8 Ko
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/02/2010, 18h55
  2. Réponses: 5
    Dernier message: 19/06/2008, 21h43
  3. Requête faite sur plusieurs champs provenant de plusieurs tables
    Par olivier777 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 14/05/2008, 17h34
  4. Ajouter les champs identiques de plusieurs tables
    Par philippesorin dans le forum Access
    Réponses: 2
    Dernier message: 27/07/2007, 08h52
  5. [Requête][97] Regroupment du champs Date
    Par majnoune dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 17/04/2007, 15h32

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