Ik heb een database met daarin de volgende tables/gegevens:
De table Users bevat een NickName en een UserID. De table Hosts bevat een HostID, een HostName en een owner (is zelfde als Users.UserID). En dat een table Flushes, die bevat Size, Flushdate en Host (is gelijk aan Hosts.HostID).
Deze tables kunnen heel mooi gejoined worden zodat er een overzicht komt van NickName en de Size.
Deze querie gebruik ik om het totaal van iedere NickName te berekenen:
En deze gebruik ik om voor iedrre Nickname de Size uit te rekeken van gister:
Dat werkt allemaal wel, maar ik zou deze gegens graag in 1 querie aan elkaar plakken zodat ik gelijk kan zien dat bv Pietje een total heeft van 3423 en gister 46 heeft gedaan.
Ik dacht dat dus te doen met een nested query. Maar veel succes leverde dat niet op. Na een halve dag ploeteren kom ik niet verder dan dit:
Het probleem hierbij is dat de geneste querie niet goed werkt. Die sum(t4.Size) die daar staat pakt alleen van 1 Host de sum, en die niet voor alle Hosts die bij een NickName horen. Eigenlijk zou die t4 gejoined moeten worden, maar dat lukt me niet.
Als ik " AND t4.Host=t3.Host" weghaal dan pakt hij de sum van alle Sizes van die datum en niet per NickName.
Met andere woorden HELP ik kom er niet uit... Mijn hoop is gevestigd op een geniale geest die hier rond wandeld.
De table Users bevat een NickName en een UserID. De table Hosts bevat een HostID, een HostName en een owner (is zelfde als Users.UserID). En dat een table Flushes, die bevat Size, Flushdate en Host (is gelijk aan Hosts.HostID).
Deze tables kunnen heel mooi gejoined worden zodat er een overzicht komt van NickName en de Size.
Deze querie gebruik ik om het totaal van iedere NickName te berekenen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| SELECT
t1.NickName,
sum(t3.Size) as Total
FROM
Users t1 left join Hosts t2 on t1.UserID=t2.Owner
left join Flushes t3 on t2.HostID=t3.Host
WHERE
t3.Size>0
AND
t3.Flushdate<current_date
GROUP by t1.UserID
ORDER by Total DESC |
En deze gebruik ik om voor iedrre Nickname de Size uit te rekeken van gister:
code:
1
2
3
4
5
6
7
8
9
10
| SELECT
t1.NickName,
sum(t3.Size) as Total
FROM
Users t1 left join Hosts t2 on t1.UserID=t2.Owner
left join Flushes t3 on t2.HostID=t3.Host
WHERE
t3.Flushdate=subdate(current_date, intereval 1 day)
GROUP by t1.UserID
ORDER by Total DESC |
Dat werkt allemaal wel, maar ik zou deze gegens graag in 1 querie aan elkaar plakken zodat ik gelijk kan zien dat bv Pietje een total heeft van 3423 en gister 46 heeft gedaan.
Ik dacht dat dus te doen met een nested query. Maar veel succes leverde dat niet op. Na een halve dag ploeteren kom ik niet verder dan dit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| SELECT
t1.NickName,
sum(t3.Size) as Total,
(select sum(t4.Size) FROM Flushes t4
WHERE
Flushdate="2003-03-22" AND t4.Host=t3.Host) as output
FROM
Users t1 left join Hosts t2 on t1.UserID=t2.Owner
left join Flushes t3 on t2.HostID=t3.Host
WHERE
t3.Flushdate<current_date
GROUP BY
t1.UserID ORDER by Total DESC; |
Het probleem hierbij is dat de geneste querie niet goed werkt. Die sum(t4.Size) die daar staat pakt alleen van 1 Host de sum, en die niet voor alle Hosts die bij een NickName horen. Eigenlijk zou die t4 gejoined moeten worden, maar dat lukt me niet.
Als ik " AND t4.Host=t3.Host" weghaal dan pakt hij de sum van alle Sizes van die datum en niet per NickName.
Met andere woorden HELP ik kom er niet uit... Mijn hoop is gevestigd op een geniale geest die hier rond wandeld.
...