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

MS SQL Server Discussion :

requette sql server


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Par défaut requette sql server
    bjr,
    je voudrai extraire un resultat sur une feuille excel depuis trois table : personne,pause_ta et fiche.
    j ai pu extraire deux resultat séparer avec deux requette :

    *** 1er resultat : nombre de fiche traité par personne :
    [SCRIPT]
    req = "select count(fiche.per_id) as tot1,personne.per_id as perid,personne.per_nom as pernom from fiche,personne where" & _
    " fiche.per_id = personne.per_id and " & _
    " fic_date_creation >= '" & txtDateDebut.Text & "' and " & _
    " fic_date_creation <= '" & txtDateFin.Text & "' " & _
    " group by personne.per_nom,personne.per_id"
    vrs.Open req, vcon
    i = 11
    Do While Not vrs.EOF
    oExcelSheet_ab.Cells(i, 1).Value = vrs("pernom")
    oExcelSheet_ab.Cells(i, 2).Value = vrs("tot1")


    i = i + 1
    vrs.MoveNext
    Loop
    vrs.Close
    [/SCRIPT]

    *** 2 emme resultat :gestion des pause de chaque personne :
    [SCRIPT]
    req = "select sum(pause_ta.pa_pause) as pause1,sum(pause_ta.pa_autre) as autre1,sum(pause_ta.pa_time) as temps1, personne.per_id as perid,personne.per_nom as pernom from pause_ta,personne where" & _
    " pause_ta.per_id = personne.per_id and " & _
    " pa_date >= '" & txtDateDebut.Text & "' and " & _
    " pa_date <= '" & txtDateFin.Text & "' " & _
    " group by pause_ta.per_id,personne.per_id,personne.per_nom"
    vrs.Open req, vcon
    i = 11
    Do While Not vrs.EOF
    oExcelSheet_ac.Cells(i, 1).Value = vrs("pernom")
    oExcelSheet_ac.Cells(i, 3).Value = vrs("pause1")
    oExcelSheet_ac.Cells(i, 4).Value = vrs("autre1")
    oExcelSheet_ac.Cells(i, 5).Value = vrs("temps1")

    i = i + 1
    vrs.MoveNext
    Loop
    vrs.Close
    [/SCRIPT]

    **********je ne sais pas comment joindre les deux requette pour obtenir un seul resultat sous la forme de :
    prenom /// tot1 /// pause1 //// autre1 /// temps 1

    merci.

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    si tu es sous sql serveur fait des join au lieu de lien direct par virgule
    et utilise between pour les intervalles. ci dessous ta requête (attention a bien garder les parenthèses et les castages)

    select
    sum(pause_ta.pa_pause) as pause1,
    sum(pause_ta.pa_autre) as autre1,
    sum(pause_ta.pa_time) as temps1,
    per.per_id as perid,
    per.per_nom as pernom
    from pause_ta
    join personne per on pause_ta.per_id = per.per_id
    join (select count(fiche.per_id) as tot1,
    per2.per_id ,
    per2.per_nom
    from fiche
    join personne per2 on fiche.per_id = per2.per_id
    where fic_date_creation between '" & txtDateDebut.Text & "' and '" & txtDateFin.Text & "'
    group by per2.per_nom,personne.per_id) A on A.perid=per.per_id and A.per_nom=per2.per_nom

    where
    pa_date between '" & txtDateDebut.Text & "' and '" & txtDateFin.Text & "'
    group by pause_ta.per_id,per.per_id,per.per_nom"


    serge

  3. #3
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    je m'étais planté sur un cast

    j'ai créé les tables avec au moins ces champs et j'ai testé =>OK
    *************************************
    /*
    create table personne
    (
    per_id int,
    per_nom varchar(50)
    )

    create table pause_ta
    (
    per_id int,
    pa_pause int,
    pa_autre int,
    pa_time int,
    pa_date datetime
    )

    create table fiche
    (
    per_id int,
    per_nom varchar(50),
    fic_date_creation datetime
    )

    */

    *************************************
    select
    sum(pa.pa_pause) as pause1,
    sum(pa.pa_autre) as autre1,
    sum(pa.pa_time) as temps1,
    per.per_id as perid,
    per.per_nom as pernom
    from pause_ta pa
    join personne per on pa.per_id = per.per_id

    join (select count(fiche.per_id) as tot1,per2.per_id ,per2.per_nom
    from fiche join personne per2 on fiche.per_id = per2.per_id
    where fic_date_creation between '2005-06-06' and '2005-06-06'
    group by per2.per_nom,per2.per_id) A on A.per_id=per.per_id and A.per_nom=per.per_nom

    where pa_date between '2005-06-06' and '2005-06-06'
    group by pa.per_id,per.per_id,per.per_nom


    voilou
    A+
    serge

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

Discussions similaires

  1. [2008] requette INSERT sql server
    Par katinka89 dans le forum Développement
    Réponses: 3
    Dernier message: 27/07/2013, 13h37
  2. [SQL SERVER 2008] Requette SQL
    Par olifile dans le forum Développement
    Réponses: 4
    Dernier message: 10/02/2010, 13h38
  3. Réponses: 5
    Dernier message: 19/02/2009, 23h07
  4. Réponses: 2
    Dernier message: 18/10/2007, 09h13

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