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

WinDev Discussion :

Remplir tableau avec plusieurs requetes


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut Remplir tableau avec plusieurs requetes
    Bonsoir,

    Je suis débutant et je bloque sur 3 choses.
    1ere: Je souhaite compter le nombre d'enregistrement d'une table MSSQL sur 24H par tranche horaire unitaire (Ex: DE 00h00 à 01h00, de 01h00 à 02h00,etc...)
    J'ai réussi et le résultat me convient, en créant toutes mes dates fixes et en faisant une succession de BETWEEN mais je suis certain qu'il existe une façon plus éclairée...
    Pouvez vous me guider?

    2e chose: J'ai donc 2 requêtes qui compte le nombre d'enregistrement dans chaque tranche horaire de la journée dans 2 tables différentes Not.Yet et Too.Late
    Les 2 sont donc de forme suivante et font chacune 24 lignes:
    Nom : NotYet.PNG
Affichages : 1008
Taille : 4,0 Ko

    Le problème est que je n'arrive pas a faire de jointure pour avoir ces 2 tables jointes sous forme de 1 table de 2 colonnes Not.Yet et Too.late. A chaque fois ma jointure me met le Too.Late à la suite de la Not.Yet (1x48lignes au lieu de 2x24 lignes)

    Comment puis je faire?

    3e chose:
    Comment est il possible de remplir un tableau avec plusieurs requetes?
    je n'arrive pas à réinitialiser le pointeur ou l'index de ligne du tableau pour remplir correctement ma 3e colonne avec ma 2e requete. Les données sont correctes et s'affichent dans la bonne colonne mais à la suite de l'énumération de la 2e colonne (48 lignes au lieu de 24 et donc colonne 2 et 3 pas en phase)
    Nom : Trop tot.PNG
Affichages : 1067
Taille : 12,3 Ko

    En espérant vous lire.

    Cordialement.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Comme tu ne nous montres pas tes requêtes, difficile de dire comment les "joindre".
    Voilà malgré tout une piste:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select r1.id,coalesce(r1.nombre,0),coalesce(r2.nombre,0)
    from
    (select id,count(*) from MaTable1 group by id)as r1
    full outer join
    (select id,count(*) from MaTable2 group by id)as r2
    on r1.id = r2.id

    C'est une façon de faire parmi d'autres.

    Sinon pour ta deuxième question, il faut chercher la ligne qui correspond dans la table, et:
    • Si tu touvres une ligne, tu lui affectes la valeur
    • Sinon tu ajoutes une ligne

    Bien sûr il faut utiliser une table mémoire ici. Regarde dans l'aide en ligne les fonctions Table*, tu devrais trouver ton bonheur.

    Tatayo.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Bonjour Tatayo,

    Merci pour cette piste. Je vais travailler dessus et reviendrai vers vous pour donner des nouvelles.

    Cordialement.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    tu peux aussi regarder du côté des fonctions SQL pour extraire l'heure, le jour, le mois etc pour tes regroupements :

    https://msdn.microsoft.com/fr-fr/library/ms174420.aspx

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Engineering
    Inscrit en
    Juillet 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Engineering
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 42
    Points : 25
    Points
    25
    Par défaut
    Bonjour Nicolas,
    J'utilisé souvent le LEFT et RIGHT sql et cela fonctionne pour l'année, mois ou jours. Par contre je n'arrive pas à isoler les heures de cette manière. Je dois encore approfondir et comprendre pourquoi cela ne fonctionne pas.
    DAY_TIME au format 20161124104134000
    LEFT (DAY_TIME,4) = ANNÉE OK
    LEFT (DAY_TIME,6) = MOIS OK
    LEFT (DAY_TIME,8) = JOURS OK

    Cordialement

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    justement la fonction Datepart te permet d'isoler la partie heure du champ en format datetime sans passer par des left ou rigth.

    Il te faudra faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Datepart(hour,DAY_TIME) + Datepart(minute,DAY_TIME) +Datepart(second,DAY_TIME)
    et tu auras directement l'heure en format hhmmss.


    à bientôt,

    Nicolas

Discussions similaires

  1. remplir tableau avec une seule instruction !
    Par tlemcenvisit dans le forum C++
    Réponses: 3
    Dernier message: 21/06/2014, 18h22
  2. "Tableau" avec plusieurs types de variables
    Par izguit dans le forum C++
    Réponses: 4
    Dernier message: 19/07/2007, 11h24
  3. [Tableaux] Remplir tableau avec variable
    Par nicerico dans le forum Langage
    Réponses: 1
    Dernier message: 09/07/2007, 15h35
  4. [DEBUTANT]Procédure stockée avec plusieurs requetes
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/06/2007, 17h49
  5. [Tableaux] Remplir tableau avec ordre defini
    Par nicerico dans le forum Langage
    Réponses: 2
    Dernier message: 03/11/2006, 10h28

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