-
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.
-
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
-
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