abonnement Unibet Coolblue
  maandag 25 juli 2011 @ 13:48:33 #76
12221 Tijn
Powered by MS Paint
pi_99919653
array_multisort() doet in grote lijnen toch wel wat je hebben wil? Misschien dat je er alleen even een functie omheen moet schrijven om te zorgen dat 'ie alleen het meest recente jaar sorteert. Of zie ik iets over het hoofd?
  maandag 25 juli 2011 @ 13:57:11 #77
305897 remi1986
This MF is infected by madness
pi_99919875
quote:
5s.gif Op maandag 25 juli 2011 13:48 schreef Tijn het volgende:
array_multisort() doet in grote lijnen toch wel wat je hebben wil? Misschien dat je er alleen even een functie omheen moet schrijven om te zorgen dat 'ie alleen het meest recente jaar sorteert. Of zie ik iets over het hoofd?
Het probleem is dat hij alle jaren moet sorteren naar de sortering van de meest recente. Maar volgens mij zit ik veel te moeilijk te denken. Ik kan natuurlijk met een foreach het meest recente jaar pakken en dan de waarden van $results[$year + 1) tonen. Dan heb ik niks nodig van een sortering.

EDIT: lang leve de maandag :Z c_/ c_/
  maandag 25 juli 2011 @ 14:02:30 #78
241330 A-mineur
Zware akkoorden.
pi_99920053
Waarom doe je allemaal zo moeilijk je kunt toch gewoon in je query orderen, ook op meerdere velden ORDER BY YEAR(date) ASC, name ASC, date desc iets in die trend, dan hoef je niet allemaal in PHP te gaan orderen wat voor PHP dus nietszeggende data is.
To doom or not to doom
pi_99920256
quote:
0s.gif Op maandag 25 juli 2011 13:57 schreef remi1986 het volgende:

[..]

Het probleem is dat hij alle jaren moet sorteren naar de sortering van de meest recente. Maar volgens mij zit ik veel te moeilijk te denken. Ik kan natuurlijk met een foreach het meest recente jaar pakken en dan de waarden van $results[$year + 1) tonen. Dan heb ik niks nodig van een sortering.

EDIT: lang leve de maandag :Z c_/ c_/
Waar haal je het vandaan? Want als je het uit een DB haalt dan kan het makkelijker opgelost worden. Anders zou ik eens gaan kijken naar je opbouw van je array, want daar kun je volgens mij ook nog een verbeterslag maken.
  maandag 25 juli 2011 @ 14:08:19 #80
305897 remi1986
This MF is infected by madness
pi_99920282
quote:
0s.gif Op maandag 25 juli 2011 14:02 schreef A-mineur het volgende:
Waarom doe je allemaal zo moeilijk je kunt toch gewoon in je query orderen, ook op meerdere velden ORDER BY YEAR(date) ASC, name ASC, date desc iets in die trend, dan hoef je niet allemaal in PHP te gaan orderen wat voor PHP dus nietszeggende data is.
het ligt allemaal iets ingewikkelder dan dit.

Gebruiker voert een start en eind jaar in.

Vervolgens ga ik met een query met allemaal joins naar andere tabellen de data ophalen die ik nodig heb. Met dit resultaat van die query, vul ik de $results array, omdat de percentages niet in de database staan, maar moeten worden berekend, kan ik daar niet in de query op ordenen.
  maandag 25 juli 2011 @ 14:11:37 #81
241330 A-mineur
Zware akkoorden.
pi_99920409
quote:
0s.gif Op maandag 25 juli 2011 14:08 schreef remi1986 het volgende:

[..]

het ligt allemaal iets ingewikkelder dan dit.

Gebruiker voert een start en eind jaar in.

Vervolgens ga ik met een query met allemaal joins naar andere tabellen de data ophalen die ik nodig heb. Met dit resultaat van die query, vul ik de $results array, omdat de percentages niet in de database staan, maar moeten worden berekend, kan ik daar niet in de query op ordenen.
Tuurlijk wel, je berekend de resultaten toch, ik zou dit sowieso berekenen met de DB daar is hij nl. voor bedoeld.

Tevens bespaart dit je een hoop onnodig rekenwerk in PHP en dataomzetting.
To doom or not to doom
  maandag 25 juli 2011 @ 14:11:48 #82
305897 remi1986
This MF is infected by madness
pi_99920416
quote:
0s.gif Op maandag 25 juli 2011 14:07 schreef Pakspul het volgende:

[..]

Waar haal je het vandaan? Want als je het uit een DB haalt dan kan het makkelijker opgelost worden. Anders zou ik eens gaan kijken naar je opbouw van je array, want daar kun je volgens mij ook nog een verbeterslag maken.
Zoals in mijn reactie hierboven, staan de percentages niet in de database. Dat wat ik toonde van de $results array is maar een klein stukje. Het is een groot overzicht met allemaal statistieken. Met de ene keer een medewerker als uitgangspunt maar in een ander overzicht het hele bedrijf.
  maandag 25 juli 2011 @ 14:16:09 #83
305897 remi1986
This MF is infected by madness
pi_99920587
quote:
0s.gif Op maandag 25 juli 2011 14:11 schreef A-mineur het volgende:

[..]

Tuurlijk wel, je berekend de resultaten toch, ik zou dit sowieso berekenen met de DB daar is hij nl. voor bedoeld.

Tevens bespaart dit je een hoop onnodig rekenwerk in PHP en dataomzetting.
Hoe kan ik met MySQL een percentage berekenen dan? En dan moet het een percentage zijn over de SUM van een aantal kolommen.
pi_99920600
quote:
0s.gif Op maandag 25 juli 2011 14:11 schreef remi1986 het volgende:

[..]

Zoals in mijn reactie hierboven, staan de percentages niet in de database. Dat wat ik toonde van de $results array is maar een klein stukje. Het is een groot overzicht met allemaal statistieken. Met de ene keer een medewerker als uitgangspunt maar in een ander overzicht het hele bedrijf.
Schaduw array bijhouden waar je percentages aan personen koppelt en deze makkelijk kunt sorteren :? Die zou je nog kunnen opnemen onder $results[jaartal][percentage2medewerker] en dan een array alla: array('85' => 'mark', '98' => 'piet', '65' => 'jan');
pi_99920630
quote:
0s.gif Op maandag 25 juli 2011 14:16 schreef remi1986 het volgende:

[..]

Hoe kan ik met MySQL een percentage berekenen dan? En dan moet het een percentage zijn over de SUM van een aantal kolommen.
Deel / totaal * 100 (normale percentage berekening lijkt me?)
  maandag 25 juli 2011 @ 14:19:49 #86
241330 A-mineur
Zware akkoorden.
pi_99920756
In MySQL heb je de mooie AVG(). Daarbij kun je gewoon een beetje creatief zijn in je query's. MySQL ondersteunt o.a Switch statements en ifelse, en een hele set aan math operators en functions.
To doom or not to doom
  maandag 25 juli 2011 @ 14:19:57 #87
305897 remi1986
This MF is infected by madness
pi_99920761
quote:
0s.gif Op maandag 25 juli 2011 14:16 schreef Pakspul het volgende:

[..]

Schaduw array bijhouden waar je percentages aan personen koppelt en deze makkelijk kunt sorteren :? Die zou je nog kunnen opnemen onder $results[jaartal][percentage2medewerker] en dan een array alla: array('85' => 'mark', '98' => 'piet', '65' => 'jan');
Dit is ongeveer vergelijkbaar met de oplossing die ik zelf gaf met de foreach loop. Want als je de volgorde weet van het eerste jaar, kan je ze gewoon benaderen als je de naam weet.
pi_99920848
quote:
0s.gif Op maandag 25 juli 2011 14:19 schreef remi1986 het volgende:

[..]

Dit is ongeveer vergelijkbaar met de oplossing die ik zelf gaf met de foreach loop. Want als je de volgorde weet van het eerste jaar, kan je ze gewoon benaderen als je de naam weet.
Ga eerst eens spelen met je database, want dit kun je perfect daaruit halen. Percentage berekening kun je gewoon in je ORDER statement gooien.

1SELECT * FROM `test` ORDER BY (Deel / Totaal) DESC

Werkende query, dat moet je probleem oplossen.
  maandag 25 juli 2011 @ 14:28:14 #89
12221 Tijn
Powered by MS Paint
pi_99921094
quote:
0s.gif Op maandag 25 juli 2011 14:16 schreef remi1986 het volgende:

[..]

Hoe kan ik met MySQL een percentage berekenen dan? En dan moet het een percentage zijn over de SUM van een aantal kolommen.
Dat is toch niet zo'n probleem? Gewoon met SUM en COUNT de totalen berekenen en dan selecten en ordenen op de waarde / totaal * 100.
  maandag 25 juli 2011 @ 14:28:34 #90
305897 remi1986
This MF is infected by madness
pi_99921109
De resultaten komen uit koppeltabellen en worden met GROUP BY bij elkaar gevoegd (hiermee krijg ik dus totalen voor in dit geval de medewerker)

Onderstaand de query met Nederlandse namen (kolommen heten anders, maar dit gaat sneller),

1
2
3
4
5
6
7
8
9
10
11
SELECT medewerker_naam
              SUM(getal1) AS getal1
              SUM(getal2) AS getal2
              SUM(getal3) AS getal3
FROM medewerkers
INNER JOIN tabel 1
INNER JOIN tabel 2
INNER JOIN tabel 3
WHERE datum BETWEEN ....
AND .. 
GROUP BY medewerker

Om het percentage te berekenen moet ik eerst getal 1 en 2 optellen. Getal 3 / (getal 1+2) * 100 = percentage wat ik nodig heb. Hoe wil dit allemaal in MySQL
  maandag 25 juli 2011 @ 14:31:14 #91
241330 A-mineur
Zware akkoorden.
pi_99921203
quote:
0s.gif Op maandag 25 juli 2011 14:28 schreef remi1986 het volgende:
De resultaten komen uit koppeltabellen en worden met GROUP BY bij elkaar gevoegd (hiermee krijg ik dus totalen voor in dit geval de medewerker)

Onderstaand de query met Nederlandse namen (kolommen heten anders, maar dit gaat sneller),
[ code verwijderd ]

Om het percentage te berekenen moet ik eerst getal 1 en 2 optellen. Getal 3 / (getal 1+2) * 100 = percentage wat ik nodig heb. Hoe wil dit allemaal in MySQL
Wat dacht je van
1
2
3
4
5
6
7
8
9
10
11
12
SELECT medewerker_naam
              SUM(getal1) AS getal1
              SUM(getal2) AS getal2
              SUM(getal3) AS getal3
              AVG (getal1, getal2, getal3) AS gemiddeld
FROM medewerkers
INNER JOIN tabel 1
INNER JOIN tabel 2
INNER JOIN tabel 3
WHERE datum BETWEEN ....
AND .. 
GROUP BY gemiddeld ASC, medewerker ASC
To doom or not to doom
  maandag 25 juli 2011 @ 14:31:46 #92
12221 Tijn
Powered by MS Paint
pi_99921223
Gewoon zo toch?

1
2
3
4
5
6
7
8
9
10
11
12
SELECT medewerker_naam
              SUM(getal1) AS getal1
              SUM(getal2) AS getal2
              SUM(getal3) AS getal3
              getal3 / (getal1+2) * 100 AS percentage
FROM medewerkers
INNER JOIN tabel 1
INNER JOIN tabel 2
INNER JOIN tabel 3
WHERE datum BETWEEN ....
AND .. 
GROUP BY medewerker
pi_99921279
1
2
SELECT Naam, SUM(Deel) / SUM(Totaal) * 100 As Percentage 
FROM `test` GROUP BY Naam ORDER BY Percentage DESC


Grrr Tijn :( Als je dan eerder wil zijn doe het dan wel goed. Je mist de ORDER BY daar had je nog 2 minuten voor.
  maandag 25 juli 2011 @ 14:35:14 #94
305897 remi1986
This MF is infected by madness
pi_99921366
quote:
0s.gif Op maandag 25 juli 2011 14:31 schreef A-mineur het volgende:

[..]

Wat dacht je van
[ code verwijderd ]

quote:
5s.gif Op maandag 25 juli 2011 14:31 schreef Tijn het volgende:
Gewoon zo toch?
[ code verwijderd ]

ok dit snap ik. Maar ik moet de volgorde bepalen van de medewerkers hoe deze getoond worden (hoogste percentage in laatste jaar bovenaan). Die ORDER BY gaat dan alleen op als jaar 2011 is (in het eerste voorbeeld dat ik gaf)
pi_99921425
quote:
0s.gif Op maandag 25 juli 2011 14:35 schreef remi1986 het volgende:

[..]


[..]

ok dit snap ik. Maar ik moet de volgorde bepalen van de medewerkers hoe deze getoond worden (hoogste percentage in laatste jaar bovenaan). Die ORDER BY gaat dan alleen op als jaar 2011 is (in het eerste voorbeeld dat ik gaf)
ORDER BY Jaartal DESC, Percentage DESC *O*
  maandag 25 juli 2011 @ 14:37:07 #96
241330 A-mineur
Zware akkoorden.
pi_99921431
ORDER BY YEAR(datum) ASC, percentage ASC

Zo schikt hij eerst op jaar, en daarna op percentage.
To doom or not to doom
  maandag 25 juli 2011 @ 14:37:19 #97
241330 A-mineur
Zware akkoorden.
pi_99921440
quote:
0s.gif Op maandag 25 juli 2011 14:37 schreef Pakspul het volgende:

[..]

ORDER BY Jaartal DESC, Percentage DESC *O*
haha je was me voor,
To doom or not to doom
pi_99921472
quote:
0s.gif Op maandag 25 juli 2011 14:37 schreef A-mineur het volgende:

[..]

haha je was me voor,
Het was het F5-en waard :P
  maandag 25 juli 2011 @ 14:46:35 #99
305897 remi1986
This MF is infected by madness
pi_99921758
hmm het zal wel aan de maandag liggen, dus wellicht nog een domme opmerking

Maar mijn uiteindelijke doel is een tabel met een overzicht van alle jaren naast elkaar (onderstaand 2011 en 2010, maar dit kunnen er 10 zijn (dus tot 2001 terug).

2011 2010
Jan (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Klaas (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Piet (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage

Volgens mij gaat dat niet goedkomen, aangezien je dit niet kan doen zonder eerst een array voor een bepaald jaar te maken. Of zit ik nu weer helemaal verkeerd te denken?

EDIT: Zou een tabel moeten voorstellen maar de jaren komen elk dus boven (getal 1 +2 etc...)
  maandag 25 juli 2011 @ 14:50:22 #100
241330 A-mineur
Zware akkoorden.
pi_99921851
quote:
0s.gif Op maandag 25 juli 2011 14:46 schreef remi1986 het volgende:
hmm het zal wel aan de maandag liggen, dus wellicht nog een domme opmerking

Maar mijn uiteindelijke doel is een tabel met een overzicht van alle jaren naast elkaar (onderstaand 2011 en 2010, maar dit kunnen er 10 zijn (dus tot 2001 terug).

2011 2010
Jan (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Klaas (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage
Piet (getal1+2), getal 3, percentage (getal1+2), getal 3, percentage

Volgens mij gaat dat niet goedkomen, aangezien je dit niet kan doen zonder eerst een array voor een bepaald jaar te maken. Of zit ik nu weer helemaal verkeerd te denken?

EDIT: Zou een tabel moeten voorstellen maar de jaren komen elk dus boven (getal 1 +2 etc...)
Als je dingen specifiek tussen 2 jaartallen wilt hebben voeg je er gewoon op het einde aan toe: WHERE YEAR(datum) BETWEEN 2000 AND 2011.
To doom or not to doom
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')