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 :

Compter les enregistrements ou des sommes


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut Compter les enregistrements ou des sommes
    Bonjour à tous,
    Je vous écris dans l'urgence car j'ai constaté un bug hier soir alors que le départ de ma mission scientifique est dans 4 heures (le flip!).

    Je cherche à lister dans une liste pour le site en cours, les infos relatives aux visites de ce site ainsi que pour chacune d'elles le nombre de photos prises, le nombre d'échantillons de mollusques pris et la somme des chauve-souris choppées.
    La requête suivante me donne des petits soucis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    SELECT T_Visites.ID_Obs, 
         T_Visites.ID_Site, 
         T_Visites.Date_debut, 
         Count(T_Photo_Visite.ID_obs) AS [NB Photos site], 
         T_Visites.Type_Obs, 
         [NB_ad_viv]+[NB_ad_mort]+[NB_juv_viv]+[NB_juv_mort]+[NB_indiff] AS [Nb chiros], 
         Count(T_Mol_Echantillon.Id_visite) AS [Nb Ech Mollux]
     
    FROM ((T_Visites LEFT JOIN T_Identification ON T_Visites.ID_Obs = T_Identification.ID_Obs) 
         LEFT JOIN T_Mol_Echantillon ON T_Visites.ID_Obs = T_Mol_Echantillon.Id_visite) 
         LEFT JOIN T_Photo_Visite ON T_Visites.ID_Obs = T_Photo_Visite.ID_obs
     
    WHERE (((T_Visites.ID_Site)=[Forms]![F_Site].[Controls]![ID_SITE]))
     
    GROUP BY T_Visites.ID_Obs, 
         T_Visites.ID_Site, 
         T_Visites.Date_debut, 
         T_Visites.Type_Obs, 
         [NB_ad_viv]+[NB_ad_mort]+[NB_juv_viv]+[NB_juv_mort]+[NB_indiff], 
         T_Mol_Echantillon.Id_visite;
    C'est à dire que si j'ai plusieurs échantillons de mollusques, je vais avoir plusieurs lignes. Et encore, les nombres de photos et d'échantillons sont démultipliés! J'ai deux photos et deux échantillons et un enregistrement de T_identification (chauve-souris), ==> la requête me renvoie deux lignes avec 8 photos et 8 échantillons de mollusques et les nombres de chiros (chauve-souris) de chaque identification (m'en fout! J'veux la somme!)


    Mayday! Mayday (c'est fou comme c'est toujours au dernier moment qu'on voit les bugs...)

  2. #2
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Et bien fait une somme,


    Tu aurais un jeu d'étude ?

  3. #3
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut
    J'ai déjà essayé de faire une somme sur [NB_ad_viv]+[NB_ad_mort]+[NB_juv_viv]+[NB_juv_mort]+[NB_indiff] mais ça deviens pire: ça me donne 96 photos, etc...

    Tu aurais un jeu d'étude ?
    J'ai hélas vidé toutes les données de test hier... Tu veux la structure par MP?

  4. #4
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    OK, j'essaierai de me débrouiller comme je suis au boulot c'est CHAUD PATATTE ... En même temps si tu le mets sur un post les autres pourront le voir aussi ...

  5. #5
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut
    Voici la bête...
    Fichiers attachés Fichiers attachés

  6. #6
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    En fait,

    Ais-je seulement bien cerné ton problème ?

    Essayons :

    Je pense que tu aurais dû faire 2 requêtes, le mieux étant je pense (décidement heureusement que c'est le week-end) de passer par une table dérivée afin de pouvoir calculer tes SUM dans le SELECT principale.

    N'ayant pas de données agrégées dans la table dérivée, ton résultat par l'agrégat dans la requête principale aurait sûrement était le bon notament par l'utilisation simplifié des Alias...

    Houlà

  7. #7
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut
    Je vois de quoi tu parles mais j'y arrive pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    SELECT T_Visites.ID_Obs, 
         T_Visites.ID_Site, 
         T_Visites.Date_debut, 
         Count(T_Photo_Visite.ID_obs) AS [NB Photos site], 
         T_Visites.Type_Obs, 
         (select(sum([NB_ad_viv]+[NB_ad_mort]+[NB_juv_viv]+[NB_juv_mort]+[NB_indiff])  from T_identification group by T_Identification.ID_Obs) AS [Nb chiros]), 
         Count(T_Mol_Echantillon.Id_visite) AS [Nb Ech Mollux]
     
    FROM ((T_Visites LEFT JOIN T_Identification ON T_Visites.ID_Obs = T_Identification.ID_Obs) 
         LEFT JOIN T_Mol_Echantillon ON T_Visites.ID_Obs = T_Mol_Echantillon.Id_visite) 
         LEFT JOIN T_Photo_Visite ON T_Visites.ID_Obs = T_Photo_Visite.ID_obs
     
    WHERE (((T_Visites.ID_Site)=[Forms]![F_Site].[Controls]![ID_SITE]))
     
    GROUP BY T_Visites.ID_Obs, 
         T_Visites.ID_Site, 
         T_Visites.Date_debut, 
         T_Visites.Type_Obs, 
         [NB_ad_viv]+[NB_ad_mort]+[NB_juv_viv]+[NB_juv_mort]+[NB_indiff], 
         T_Mol_Echantillon.Id_visite;

  8. #8
    Membre régulier

    Inscrit en
    Juin 2006
    Messages
    320
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 320
    Points : 97
    Points
    97
    Par défaut
    Tant pis, je pars.
    Un avion, ça n'attend pas.
    Merci à ceux qui ont essayé de m'aider.

Discussions similaires

  1. Compter les enregistrements
    Par kirouha dans le forum Access
    Réponses: 24
    Dernier message: 11/07/2006, 16h21
  2. Compter les enregistrements d'un sous-formulaire
    Par djamy dans le forum Access
    Réponses: 6
    Dernier message: 06/07/2006, 21h18
  3. Compter les enregistrements formulaire
    Par mat44_39 dans le forum IHM
    Réponses: 4
    Dernier message: 17/06/2005, 12h21
  4. Compter les enregistrements modifiés
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/10/2004, 14h12
  5. [VB.NET] Compter les enregistrements d'une requete
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/10/2004, 18h46

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