abonnement Unibet Coolblue Bitvavo
pi_99744290
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$result 
mysql_query('SELECT Names, Status, COUNT(ID) AS 'Count' FROM tabel GROUP BY Names, Status');

$outputArray = array();

while(
$record mysql_fetch_assoc($result)
{
    if ( isset(
$outputArray[$record['Names']]) === false )
    {
        
$outputArray[$record['Names']] = array(
            
'Passed' 0,
            
'Skipped' 0,
            
'Failed' 0,
        );
    }

    
$outputArray[$record['Names']][$record['Status']] = $record['Count'];
}
?>

Nu heb je een leuke array welke je kunt doorlopen om de tabel goed te vullen :)

1
2
3
4
5
6
7
<?php
foreach ($outputArray as $naam => $info)
{
    
// voorbeeld output: 'Naam_1 (5,2,0)
    
echo $naam " (" $info['Passed'] . "," $info['Skipped'] . "," $info['Failed'] . ")";
}
?>

Waar de echo staat kun je de insert query gaan bouwen :)
pi_99744635
Thanks voor je voorbeeld ^O^ zal eens kijken of ik me huidige code (andere taal trouwens) aanpas of dat ik het dan nu gewoon zo laat zoals het is :) iig zoals gezegd bedankt!
pi_99744743
Je zult wat dingen moeten aanpassen, maar berekende dingen (echt zware berekeningen) moet je niet database uitvoeren. Zelfde als bij een forum, daar ga je de topic of post count niet berekenen, want dat duurt veels te lang. Dan kun je er beter voor kiezen een kolom op te nemen waar je dit kunt opslaan en snel weer terug kunt halen.

Succes er mee, en als er nog iets is dan horen we het wel weer :)
pi_99832830
opgelost :D
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  maandag 25 juli 2011 @ 12:50:06 #65
267443 Cue_
Cuecumbergirl
pi_99917755
Kort vraagje;

Ik wil een rij van de ene tabel naar de andere tabel queryen.
wat eigenlijk neer komt op :

insert into table1 values (select * from table 2 where iets = iets)

Maar letterlijk werkt ie zo niet, want hij ziet volgens mij die select als 1 value.Iemand ideeen?
tnx alvast! :)
  maandag 25 juli 2011 @ 12:53:18 #66
12221 Tijn
Powered by MS Paint
pi_99917850
quote:
5s.gif Op maandag 25 juli 2011 12:50 schreef Cue_ het volgende:
Kort vraagje;

Ik wil een rij van de ene tabel naar de andere tabel queryen.
wat eigenlijk neer komt op :

insert into table1 values (select * from table 2 where iets = iets)

Maar letterlijk werkt ie zo niet, want hij ziet volgens mij die select als 1 value.Iemand ideeen?
tnx alvast! :)
Zoiets?

1
2
3
INSERT INTO target_table (col1, col2, col3, col4) 
    SELECT (col1, col2, col3, col4) FROM source_table 
    WHERE iets = iets;
  maandag 25 juli 2011 @ 12:58:17 #67
267443 Cue_
Cuecumbergirl
pi_99917983
quote:
5s.gif Op maandag 25 juli 2011 12:53 schreef Tijn het volgende:
Zoiets?
[ code verwijderd ]

Ik zal dus echt alle kolomnamen moeten uitschrijven?
  maandag 25 juli 2011 @ 13:24:25 #68
12221 Tijn
Powered by MS Paint
pi_99918829
quote:
0s.gif Op maandag 25 juli 2011 12:58 schreef Cue_ het volgende:

[..]

Ik zal dus echt alle kolomnamen moeten uitschrijven?
Ja, maar dat is toch sowieso wel een goed idee? Anders faalt je query als je later ooit eens een kolom aan je tabel toevoegt.
  maandag 25 juli 2011 @ 13:26:49 #69
267443 Cue_
Cuecumbergirl
pi_99918916
quote:
2s.gif Op maandag 25 juli 2011 13:24 schreef Tijn het volgende:

Ja, maar dat is toch sowieso wel een goed idee? Anders faalt je query als je later ooit eens een kolom aan je tabel toevoegt.
de twee tabellen zullen identiek zijn, dus daar maak ik me geen zorgen over. Maar tnx :) hij werkt!
  maandag 25 juli 2011 @ 13:41:21 #70
12221 Tijn
Powered by MS Paint
pi_99919392
quote:
0s.gif Op maandag 25 juli 2011 13:26 schreef Cue_ het volgende:

[..]

de twee tabellen zullen identiek zijn
Famous last words :7

quote:
Maar tnx :) hij werkt!
Ik ben wel benieuwd waarom je eigenlijk dubbele data wil opslaan in je database. Heb je niet genoeg aan gewoon het ID van de rij die je nodig hebt?
pi_99919411
quote:
2s.gif Op maandag 25 juli 2011 13:41 schreef Tijn het volgende:

[..]

Famous last words :7

[..]

Ik ben wel benieuwd waarom je eigenlijk dubbele data wil opslaan in je database. Heb je niet genoeg aan gewoon het ID van de rij die je nodig hebt?
Ik vermoed dat het iets van logging of archiving is dat Cue_ wil bewerkstelligen.
  maandag 25 juli 2011 @ 13:43:55 #72
267443 Cue_
Cuecumbergirl
pi_99919489
quote:
0s.gif Op maandag 25 juli 2011 13:41 schreef Scorpie het volgende:
Ik vermoed dat het iets van logging of archiving is dat Cue_ wil bewerkstelligen.
Dat inderdaad :)
Zijn waarschijnlijk nog wel meer methodes voor, maar deze is voor dit geval gekozen.
  maandag 25 juli 2011 @ 13:44:12 #73
267443 Cue_
Cuecumbergirl
pi_99919501
quote:
2s.gif Op maandag 25 juli 2011 13:41 schreef Tijn het volgende:

Famous last words :7
i know ;(
pi_99919520
Ik heb een array die er zo uit ziet

1
2
3
4
5
6
<?php
$results
[2010]['medewerker']['jan']['percentage'] = 10
$results
[2010]['medewerker']['piet']['percentage'] = 20
$results
[2011]['medewerker']['jan']['percentage'] = 15
$results
[2011]['medewerker']['piet']['percentage'] = 20
?>

De namen van de medewerkers zijn ff fictief, maar heeft ook niks te maken met het uiteindelijke doel.

Ik wil nu de percentages aflopend sorteren van het hoogste jaar (in dit geval 2011, maar is variabel). Alleen als de percentages van 2011 worden gewijzigd (en dus de keys ook), wil ik dat ook van de andere jaren doen, aangezien alles in een tabel wordt weergegeven.

Ik heb gekeken naar de standaard array sort functies (sort, asort, multisort etc.), maar volgens mij is er geen standaard functie voor.

Heeft iemand een idee om dit voor elkaar te krijgen?
pi_99919634
quote:
0s.gif Op maandag 25 juli 2011 13:43 schreef Cue_ het volgende:

[..]

Dat inderdaad :)
Zijn waarschijnlijk nog wel meer methodes voor, maar deze is voor dit geval gekozen.
Data replicatie is niet altijd de beste manier. Kan je neit beter gewoon een indicator maken die aangeeft dat de record in kwestie is verwijderd/readonly/archived is ?
  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?
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.
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
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.
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
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.
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
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')