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 à l'essai
    Inscrit en
    Juillet 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 18
    Points : 17
    Points
    17
    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 éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    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 éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    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