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 :

Clause WHERE DATE between


Sujet :

Requêtes et SQL.

  1. #21
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut Nessie37,

    si tu as seulement "une feuille de données listant tous mes médias qui n'ont pas de résultat" c'est qu'effectivement s'il n'y a pas d'enregistrements dans la plage de date défini pour un média, il n'apparaitra pas le média dans le résultat de la requete.

    il faut refaire ta requete par exemple ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t1.Libellé,
    (select count(*) from detail where (t1.codemed=detail.codemed) and  detail.date between Formulaires![3 TABLEAU DE BORD]!Date1 And Formulaires![3 TABLEAU DE BORD]!Date2 OR IsNull(DETAIL.date)) as nb,
    iif(nb=0,'-',nb) AS CompteDeNumdetail,
    iif(nb=0,'-',nb/(select count(*) from detail)) AS [%]
    FROM media AS t1;
    par contre je n'ai pas compris ce que tu veux dire par:
    De plus, je confirme que les résultats affichés correspondent aux dates figées dans les # et non à celles que j'entre

  2. #22
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Bonjour Vodiem et merci bcp.
    Ce que je voulais dire, c'est que, avec la précédente requête (pas celle que tu viens de me donner), les résultats que j'avais correpondaient effectivement aux données comprises dans la période # # AND # #.
    Et.... Et puis oublie, je me suis comprise ! C'était juse une info rien d'important !
    Je n'ai pas encore eu la possibilité de tester ta formule.

    Je te tiens bien évidemment au courant.
    A bientôt

  3. #23
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Bonjour Vodiem,

    Je viens d'essayer ta suggestion (dont je ne comprends pas trop le raisonnement, j'aurai donc besoin d'une explication).
    Eh bien, résultat.............
    j'ai bien tous mes libellés, mais il a compté tous les appels (car il s'agit en l'occurence d'appels, il y en avait 14), et a donc attribué en %, 1 à chaque fois. Il a fait un comptedenumdetail simple et non par codemed.

    De plus on était obligé de passer par "un count...as nb", puis un "iif() as CompteDeNumdetail" ? Ce n'est pas redondant ?

    Je me replonge sur la formule pour voir si je ne peux pas trouver le problème seule !

    Dans l'attente.

  4. #24
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    je t'explique rapidement la requete:

    SELECT t1.Libellé,
    selectionne le libellé de [media]
    (select count(*) from detail where (t1.codemed=detail.codemed)
    attribue au champ nb le compte d'enregistrements ayant le codemed dans [detail] correspondant au codemed de [media]
    and detail.date between Formulaires![3 TABLEAU DE BORD]!Date1 And Formulaires![3 TABLEAU DE BORD]!Date2 OR IsNull(DETAIL.date)) as nb,
    et inclus dans la plage de date défini dans le form
    iif(nb=0,'-',nb) AS CompteDeNumdetail,
    ce champ CompteDeNumdetail vaut: si le compte d'enregistrement 'nb' est nul: un tiret sinon le nb de codemed trouvé dans detail pour ce media
    iif(nb=0,'-',nb/(select count(*) from detail)) AS [%]
    ce champ % calcul le pourcentage pour ce media par rapport au nb total d'enregitrement. s'il n'y a pas d'enregistrement trouvé pour ce média: un tiret.
    FROM media AS t1;
    à partir de la table media

    donc je ne comprends pas ton pb:
    mais il a compté tous les appels (car il s'agit en l'occurence d'appels, il y en avait 14), et a donc attribué en %, 1 à chaque fois. Il a fait un comptedenumdetail simple et non par codemed.
    revérifie tes données, sinon il y a qqc qui m'a échappé.

  5. #25
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    J'ai une table DETAIL (clé primaire=numdetail) sur laquelle est basée mon form et tous mes calculs. Dans cette T, il y a le champ codemed (qui est la clé primaire de ma table MEDIA).
    J'ai jusqu'à présent 14 enregistrements (14 appels que j'ai enregistrés).
    Donc comptedenumdetail = 14, ça on est ok.
    A chaque enregistrement, j'ai sélectionné un type de media correspondant à l'appel.
    Donc dans les 14 enregistrements, je vais par exemple en avoir 7 du codemed1, 3 du codemed2, etc...

    Eh bien avec la formule que tu m'as donnée, ma requête "liste des appels par média" me liste donc tous les média (c'est déjà un bon début) mais elle me met dans le colonne "nb" 14 pour chque type de média et donc forcément 1% dans la colonne pourcentage.

    Suis-je plus claire ?

    C'est la raison pour laquelle je voulais comprendre la logique de ta formule SQL afin de rectifier là où je dois rectifier.

    J'y retourne (faut le temps que tes explictions montent au cerveau)

  6. #26
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    tes explications correspondent bien à ce que j'ai compris, donc la requete doit fonctionner.
    regarde du coté de tes tables si les codemed correspondent entre media et detail.

  7. #27
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Oki !
    Le truc c'est que j'ai copié-collé ton code sur ma requête en effaçant mon ancien code et, en passant la requête en mode création, il n'y avait plus qu'une seule table avec ton code.
    Une table détail, ne correspondant pas à la mienne et pas de table media.
    Alors j'ai rajouté la table média et là c'était le cafouilli ...enfin bref.

    Je te tiens au courant dans la seconde.

  8. #28
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Je ne comprends pas
    ça marche !

    Donc si je veux qu'elle fonctionne je dois garder les 2 AS (nb et comptedenumdetail) qui sont des info redondantes ?
    Et pourquoi le format pourcentage ne m'est pas proposé une fois que j'intègre cette requête dans mon form sous form de sou form (je plaisante sur la colère rouge, ce n'est q'un détail que je vais rectifier...mais quand même)

  9. #29
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    effectivement il faut éviter de passer en mode création cela détruit parfois le code sql.

    tu dois garder le "as nb" pour le reste tu renomme cela comme tu veux mais il n'y a pas de redondance.

  10. #30
    Débutant  
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    887
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 887
    Points : 206
    Points
    206
    Par défaut
    Ok merci.
    J'ai effectivement supprimé la colonne dont je n'ai pas besoin dans le sous-form qu'elle compose.
    Mais du coup je n'arrive pas dans ta requête à placer le format percent (car définitivement, il ne m'est pas proposé dans les propriétés du sous-form)...

Discussions similaires

  1. Clause Where date + heure
    Par SAS_Nyx dans le forum SQL
    Réponses: 5
    Dernier message: 23/04/2013, 17h13
  2. Réponses: 8
    Dernier message: 16/08/2006, 15h39
  3. [8.i]Fonctions dates et clause Where
    Par jdotti dans le forum Oracle
    Réponses: 6
    Dernier message: 03/08/2006, 19h07
  4. [DTS] Problème avec clause WHERE sur Date
    Par bibou dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 28/06/2006, 13h18
  5. Clause Where sur une Date
    Par Zebulonn dans le forum Installation
    Réponses: 31
    Dernier message: 20/10/2005, 12h56

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