Ik heb een aardig probleem. Ik heb 2 dagen mee geworsteld, en toen kwam ik er nog niet uit. Ervaren programmeurs hier wisten het ook niet.
.
Ik heb even uitgetypt, met een MySQL tabel als voorbeeld met daarin fictieve waarden:
+-----------+-----------------+---------------------+
| Naam | Gespreksduur | TypeGesprek |
+---------------------------------------------------+
| | | |
| Jaap | 00:17:45 | Vaste lijn |
| Anita | 00:06:33 | Vaste lijn |
| Kees | 00:06:44 | Mobiele lijn |
| Jaap | 00:02:36 | Vaste lijn |
| Jaap | 00:02:34 | Mobiele lijn |
| Anita | 00:04:50 | Mobiele lijn |
| Jaap | 00:02:41 | Vaste lijn |
| Maartje | 00:03:43 | Mobiele lijn |
| Kees | 01:02:46 | Vaste lijn |
| Anita | 00:05:34 | Mobiele lijn |
| Jaap | 00:16:34 | Vaste lijn |
+-----------+-----------------+---------------------+
Je hebt dus in de tabel een naam die gebeld heeft, tijdsduur van gesprek, en soort gesprek.
Ik heb de volgende SQL-statement:
Dan verschijnen er 2 columns, namelijk de totale tijd en per persoon. Je ziet dus wie totaal uren gebeld heeft. Dan kun je daarop selecteren.
Nu moet er een 3e column bijkomen.
Nu moet ik dat uitscheiden naar type gesprek per persoon, binnen dezelfde query, zodat er een column verschijnt met totale uren per type gesprek, gegroepeerd naar naam.
Dus er moeten nog columns naast de huidige 2 columns komen, namelijk hoeveel uren daarvan aan Mobiele Gesprekken besteed zijn, en hoeveel daarvan aan Vaste gesprekken.
Ik heb verschillende varianten geprobeerd zoals:
Werkte niet, naast talloze varianten zoals:
Dat gaf niet het gewenste resultaat. De waarden worden dan in 1 column gesorteerd, terwijl er eigenlijk 2 columns bij moeten komen.
.
Ik ben niet iemand die het gaat vragen, maar alles uitzoekt. Maar na 2 hele dagen zoeken op internet, is het nog steeds niet gelukt.
Wel trof ik suggesties voor LEFT JOIN etc aan, maar die hebben betrekking op externe tabels. Anders zouden de waarden van naam, en totale gespreksduur ook weer weg vallen.
.
Hebben de Twiekers onder ons nog tips?
Ik heb even uitgetypt, met een MySQL tabel als voorbeeld met daarin fictieve waarden:
+-----------+-----------------+---------------------+
| Naam | Gespreksduur | TypeGesprek |
+---------------------------------------------------+
| | | |
| Jaap | 00:17:45 | Vaste lijn |
| Anita | 00:06:33 | Vaste lijn |
| Kees | 00:06:44 | Mobiele lijn |
| Jaap | 00:02:36 | Vaste lijn |
| Jaap | 00:02:34 | Mobiele lijn |
| Anita | 00:04:50 | Mobiele lijn |
| Jaap | 00:02:41 | Vaste lijn |
| Maartje | 00:03:43 | Mobiele lijn |
| Kees | 01:02:46 | Vaste lijn |
| Anita | 00:05:34 | Mobiele lijn |
| Jaap | 00:16:34 | Vaste lijn |
+-----------+-----------------+---------------------+
Je hebt dus in de tabel een naam die gebeld heeft, tijdsduur van gesprek, en soort gesprek.
Ik heb de volgende SQL-statement:
code:
1
2
3
4
| SELECT naam SEC_TO_TIME(SUM(TIME_TO_SEC(Gespreksduur))) as totaalduur FROM telefoongesprekken GROUP BY naam |
Dan verschijnen er 2 columns, namelijk de totale tijd en per persoon. Je ziet dus wie totaal uren gebeld heeft. Dan kun je daarop selecteren.
Nu moet er een 3e column bijkomen.
Nu moet ik dat uitscheiden naar type gesprek per persoon, binnen dezelfde query, zodat er een column verschijnt met totale uren per type gesprek, gegroepeerd naar naam.
Dus er moeten nog columns naast de huidige 2 columns komen, namelijk hoeveel uren daarvan aan Mobiele Gesprekken besteed zijn, en hoeveel daarvan aan Vaste gesprekken.
Ik heb verschillende varianten geprobeerd zoals:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| SELECT ( SELECT naam SEC_TO_TIME(SUM(TIME_TO_SEC(Gespreksduur))) as vastduur FROM telefoongesprekken WHERE TypeGesprek = 'Vaste lijn' GROUP BY naam ), ( SELECT naam SEC_TO_TIME(SUM(TIME_TO_SEC(Gespreksduur))) as mobielduur FROM telefoongesprekken WHERE TypeGesprek = 'Mobiele lijn' GROUP BY naam ) |
Werkte niet, naast talloze varianten zoals:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| SELECT naam SEC_TO_TIME(SUM(TIME_TO_SEC(Gespreksduur))) as vastduur FROM telefoongesprekken WHERE TypeGesprek = 'Vaste lijn' GROUP BY naam UNION SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(Gespreksduur))) as mobielduur FROM telefoongesprekken WHERE TypeGesprek = 'Mobiele lijn' GROUP BY naam |
Dat gaf niet het gewenste resultaat. De waarden worden dan in 1 column gesorteerd, terwijl er eigenlijk 2 columns bij moeten komen.
Ik ben niet iemand die het gaat vragen, maar alles uitzoekt. Maar na 2 hele dagen zoeken op internet, is het nog steeds niet gelukt.
Hebben de Twiekers onder ons nog tips?
[ Voor 3% gewijzigd door Hatsieflatsie op 04-08-2014 23:40 ]