[SQL] 1 regel uit tabel 1 + SUM uit tabel 2

Pagina: 1
Acties:

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 31-05 20:55
Misschien een rare titel, maar ik ga het uitleggen waarmee ik zit:

Ik heb dus een MS SQL server met een berg tabellen en records daarin.

Nu heb ik niet zoveel ervaring met Query's maar het lukt me tot nu toe aardig, maar ik kom niet uit mijn volgende probleem.

Ik heb 2 tabellen, tabel 1 Subnummer en tabel 2 Tijdlijst.
In de tabel subnummer zit data wat ik eruit wil halen, en elke regel in deze tabel wordt 1 regel in mijn ASP'tje. Maar aan die regel komt nog een optelling uit tabel Tijdlijst. Maar in tabel tijdlijst zitten vaak meerdere regels die ik tot 1 regel samen wil voegen door SUM.

Bijde tabellen worden doormiddel van Ordernummer en Subnummer aan elkaar geknoopt.

Ik heb voor bovenstaande de volgende query verzonnen:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SELECT 
    Sub.Subnummer,
    Sub.OmschrijvingWerkzaamheden,
    Sub.StatusOpdracht,
    Sub.UrenUitvoering,
    Sub.TotaalGereed,
    Sub.UrenManagement,
    SUM(TijdU.TotaalUren) AS VerwerktUrenUitvoering,
    SUM(TijdM.TotaalUren) AS VerwerktUrenManagement
FROM
    Subnummer AS Sub,
    Tijdlijst AS TijdU,
    Tijdlijst AS TijdM
WHERE
    Sub.OrderNummer = '77.888.9' AND
    TijdU.OrderNummer = Sub.OrderNummer AND
    TijdM.OrderNummer = Sub.OrderNummer AND
    TijdU.SubNummer = Sub.SubNummer AND
    TijdM.SubNummer = Sub.SubNummer AND
    TijdU.UitvoeringManagement = 'Uitvoering' AND
    (TijdM.UitvoeringManagement = 'Management' OR
     TijdM.UitvoeringManagement = 'Engineering')
GROUP BY
    Sub.Subnummer,
    Sub.OmschrijvingWerkzaamheden,
    Sub.StatusOpdracht,
    Sub.UrenUitvoering,
    Sub.TotaalGereed,
    Sub.UrenManagement

Maar als ik dit draai dan krijg ik van alle subnummers in ordernummer '77.888.9' alles netjes onder elkaar, maar de optelling van de uren (VerwerkUrenUitvoering en VerwerktUrenManagement) wordt veel te hoog?

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:57
In welk type veld sla je die uren op ?

https://fgheysels.github.io/


  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 31-05 20:55
whoami schreef op 24 September 2003 @ 16:22:
In welk type veld sla je die uren op ?
Het veld TotaalUren is Decimal, Length: 9, Allow Nulls, Precision 18, Scale 2

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 31-05 20:55
Misschien moet ik iets duidelijker worden. Daarom ff een tabelletje wat de SQL db voor moet stellen, en daaronder het resultaat wat ik dan met een query eruit wil halen.

Tabel SubNummer:
OrderNummerSubNummerUrenUitvoeringUrenManagement
77.888.90101202
77.888.9020155


Tabel Tijdlijst:

OrderNummerSubNummerUitvoeringManagementTotaalUren
77.888.9010Uitvoering8
77.888.9010Engineering1
77.888.9010Uitvoering40
77.888.9010Uitvoering16
77.888.9010Management1
77.888.9020Uitvoering10



Wat ik dmv een query eruit wil halen:
OrderNummerSubNummerUrenUitvoeringUrenManagementVerwerktUrenUitvoeringVerwerktUrenManagement
77.888.90101202642
77.888.9020155100

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 31-05 20:55
offtopic:
Ik ben geloof niet de enigste die het niet helemaal begrijpt!

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


Verwijderd

Misschien is dit iets:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
    Subnummer,
    OmschrijvingWerkzaamheden,
    StatusOpdracht,
    UrenUitvoering,
    TotaalGereed,
    UrenManagement,
    (SELECT SUM(TotaalUren) FROM TijdLijst WHERE OrderNummer = Sub.Ordernummer AND SubNummer = Sub.SubNummer AND UitvoeringManagement = 'Uitvoering') AS VerwerktUrenUitvoering,
    (SELECT SUM(TotaalUren) FROM TijdLijst WHERE OrderNummer = Sub.Ordernummer AND SubNummer = Sub.SubNummer AND UitvoeringManagement = 'Management') AS VerwerktUrenManagement
FROM
    Subnummer Sub
WHERE
    Sub.OrderNummer = '77.888.9'


:7

  • Polderdijk
  • Registratie: December 2001
  • Laatst online: 31-05 20:55
Typhon, ik loop al 2 dagen op die query te staren, maar het lukte maar niet! Maar ik moet gewoon niet zo moeilijk denken :)

Dit is de code die ik nu ga gebruiken...

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
    Subnummer,
    OmschrijvingWerkzaamheden,
    StatusOpdracht,
    UrenUitvoering,
    TotaalGereed,
    UrenManagement,
    (SELECT SUM(TotaalUren) FROM TijdLijst WHERE OrderNummer = Sub.Ordernummer AND SubNummer = Sub.SubNummer AND UitvoeringManagement = 'Uitvoering') AS VerwerktUrenUitvoering,
    (SELECT SUM(TotaalUren) FROM TijdLijst WHERE OrderNummer = Sub.Ordernummer AND SubNummer = Sub.SubNummer AND (UitvoeringManagement = 'Management' OR UitvoeringManagement = 'Engineering')) AS VerwerktUrenManagement
FROM
    Subnummer Sub
WHERE
    Sub.OrderNummer = '77.888.9'

Webhosting van SkyHost.nl: 25 Mb / 1 Gb windows hosting € 4,50 p/m excl.btw!


  • Sircuri
  • Registratie: Oktober 2001
  • Niet online

Sircuri

Volledig Appelig

Ik heb zo'n zelfde probleem, maar dan onder MySQL. Aangezien MySQL geen subselects ondersteunt moet het op een andere manier. Ik kom er dus ook niet uit. Hoe kan je het beste een subselect nabootsen op een MySQL server?

Signature van nature


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Sircuri schreef op 26 September 2003 @ 10:16:
Ik heb zo'n zelfde probleem, maar dan onder MySQL. Aangezien MySQL geen subselects ondersteunt moet het op een andere manier. Ik kom er dus ook niet uit. Hoe kan je het beste een subselect nabootsen op een MySQL server?
Er is helemaal geen subselect nodig voor dit soort gevallen, een gewone join met een group by volstaat.

Who is John Galt?

Pagina: 1