recursief zoeken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Drupal Developer ICT

Over het bedrijf: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is de grootste Drupal specialist van Nederland. Ben jij een Drupal Developer? Heb je ervaring in Drupal 8 Development? Vaste baan: Drupal Developer ICT Agile Scrum 2.800 - 4.200 Drupal Developer Deze werkgever is de Drupal specialist in Nederland. Deze werkgever heeft meerdere vestigingen door Nederland en België heen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie. Zij werken met moderne technologie en staan open voor innovatie. Jouw werkzaamheden als Drupal Developer

Bekijk vacature »

Android (mobile) Developer met JAVA in de regio Al

Bedrijfsomschrijving Mobile Development en Ops Engineering gaan hand in hand bij deze organisatie dat een hoog verantwoordelijkheidsgevoel draagt. Als organisatie ontwikkelt zij dan ook veelal mobiele applicaties ter inspiratie en ondersteuning van belangrijke sectoren in Nederland. Met het technische team van gepassioneerde developers en engineers voeren ze dagelijks veelal diverse, inspirerende en complexe werkzaamheden uit. Door gebruik van innovatieve software en de nieuwste platformen binnen de sector is deze klant dan ook zeker als vooruitstrevend te betitelen waar zijn enorm veel waarde aan hecht. De organisatie is momenteel zeer succesvol en zet mooie stappen richting de toekomst en daarom kunnen

Bekijk vacature »

Senior Software Engineer

Ons aanbod Werken voor Veynex Embedded Software betekent : Werken aan uitdagende state-of-the-art projecten Hybride werken 60 % thuis en 40 % op kantoor Flexibele werktijden 32 tot 40 uur per week Faciliteren kantoor aan huis Thuiswerk- én onkostenvergoeding Arbeidscontract voor onbepaalde tijd Bovengemiddeld salaris Ruime en flexibele mobiliteitsregeling Vergoeding voor bedrijfsfitness Ruim ontwikkelbudget voor opleiding en coaching Deelnemen aan de nodige social events Uitstekende secundaire en tertiaire voorwaarden Én ..... Jij zoekt een inspirerende plek om te werken. Een uitdagende baan. De ruimte om écht iets te kunnen ondernemen. Jij zoekt een mooie baan in de techniek. In onderzoek

Bekijk vacature »

PHP Software Developer JavaScript Kunst Cultuur Se

Bij welk bedrijf je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is een multimediaal ontwerpbureau. Heb jij een HBO werk & denkniveau? Heb jij ervaring met PHP? Vaste baan: PHP Software Developer JavaScript Kunst Cultuur Sector HBO 2.400 - 3.600 Fullstack Developer Deze werkgever is een multimediaal ontwerpbureau dat multimediale belevingen ontwerpt en ontwikkelt voor musea, bedrijven, experience centers en tentoonstellingen. Dit kan zijn een interactief spel, een volledige immersive projectie, een digitale verdieping van een onderwerp maar ook een spetterende web applicatie. Werken bij

Bekijk vacature »

Ervaren Node JS Developer Backend

Bij welk bedrijf je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij ontwikkelen software apps. Ben jij een enthousiaste Node.JS developer? Heb jij ervaring met Node.JS? Vaste baan: Node JS Developer Backend Transcript 3.000 - 4.500 Node JS Developer Op dit moment zijn zij een scale-up. Zij zijn een sterke speler binnen app development en zijn hard op weg om marktleider te worden. Zij bieden verschillende opleidings- en ontwikkelingsmogelijkheden binnen het bedrijf, waardoor je de kans krijgt om door te groeien. Daarnaast hebben we een laagdrempelige en

Bekijk vacature »

C++ Developer bij bedrijf die samenwerkt met NASA

Bedrijfsomschrijving Het gaat hier om een innovatief bedrijf die met verschillende bekende bedrijven samenwerkt. Denk aan de Automotive sector, waarbij ze samenwerken met bekende automerken. Daarnaast hebben ze ook NASA en de overheid als partner. Ook werken ze samen met schillende telecombedrijven en met bekende Cloud applicaties. Ze ontwikkelen en produceren zichtbaarheidsoplossingen voor cyber security. Daarnaast werken ze aan monitoring van netwerkprestaties. Ze zijn een toonaangevende fabrikant van innovatieve producten en zijn zelf met hun eigen unieke product ook een koploper in de markt. Het bedrijf is erg professioneel maar het team onderling is erg informeel in de omgang. Er

Bekijk vacature »

PHP Software Developer Webapplicaties

Bij welk bedrijf je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij verzorgen de ontwikkeling van websites, webshops en online marketing. Wil jij webshops, webapplicaties en websites ontwikkelen? Heb je ervaring als PHP developer? Vaste baan: PHP Developer Webapplicaties Javascipt 2.800 - 3.800 PHP Developer Wij houden ons bezig met het aanbieden van internetproducten en diensten zoals websites, webshops en online marketing. Zij werken voor MKB klanten. Deze werkgever heeft veel verschillende projecten. Houd jij van afwisseling? Dan zit je bij hun goed! Welke taken horen bij

Bekijk vacature »

Ervaren Android Developer Kotlin

Over het bedrijf: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij vertalen complexe problemen naar intuïtieve oplossingen. Ben jij een enthousiaste software developer? Heb jij ervaring met Android? Vaste baan: Android Developer Kotlin Atlassian 3.000 - 4.200 Android Developer Op dit moment zijn zij een scale-up. Zij zijn een sterke speler binnen app development en zijn hard op weg om marktleider te worden. Zij bieden verschillende opleidings- en ontwikkelingsmogelijkheden binnen het bedrijf, waardoor je de kans krijgt om door te groeien. Daarnaast hebben we een laagdrempelige en gezellige bedrijfscultuur.Bij

Bekijk vacature »

Back-end Ruby ontwikkelaar

Zoek jij een baan in een unieke branche? Ligt jouw passie bij het ontwikkelen van Back-end Ruby applicaties en wil je in een leuk team werken? Dan past de functie van Back-end Ruby ontwikkelaar perfect bij jou. Ter ondersteuning van de afdeling Engineering zijn wij op zoek naar een Back-end Ruby ontwikkelaar voor 40 uur per week. Back-end Ruby ontwikkelaar Wat ga je doen? Je bent verantwoordelijk voor het ontwikkelen en onderhouden van casino systemen in de cloud. Je komt te werken in een team met een zeer brede kennis van ontwikkelen. Denk hierbij aan Hardware, Front-end, Back-end ontwikkeling in

Bekijk vacature »

Android mobile ontwikkelaar gezocht!

Bedrijfsomschrijving Mijn klant is gevestigd in Veenendaal en een belangrijke speler binnen de retail in Nederland. Vanuit het kantoor in Veenendaal worden er dagelijks vele goederenstromen beheerd en gedistribueerd. Binnen het IT team zijn momenteel 25 specialisten actief. Functieomschrijving Als Android Developer ga jij je bezighouden met de ontwikkeling, implementatie en onderhoud van de Android app/platform. Je denkt mee met de business in functionele eisen die vertaald worden naar behoeften van klanten. Je werkt binnen een multidisciplinair team met Scrum Masters, Product Owners, IOS & Android Developers en UX Designers. Concreet ben je verantwoordelijk voor: documentatie, programmeren van aanpassingen binnen

Bekijk vacature »

Technical C# Developer

Functieomschrijving As a C# developer you will work on great products, for example we build navigation systems for the offshore industry. Next to this we are currently building an underwater robot for deep-sea exploration! Currently due to growth we are looking for a C# Developer for our office in Delft. The robot we develop is for deep-sea exploration. We develop, build and test the robot from scratch! Functie-eisen Experience with C# in combination with .NET Knowledge of MVVM and WPF Affinity with Hardware (sensors, camera’s imaging) Unit Test and extensive knowledge about Object Orient Working in an international environment and

Bekijk vacature »

Mendix Ontwikkelaar Logistiek Bedrijf

Voor wie je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Deze werkgever is een bergingsbedrijf. Wil jij graag aan de slag als Mendix Ontwikkelaar? Heb jij al ervaring met Mendix? Vaste baan: Mendix Ontwikkelaar Logistiek Bedrijf HBO 2.800 - 4.200 Mendix Ontwikkelaar Wij garanderen op elk moment mobiliteit. Een flinke belofte, waarvoor we graag alles uit de kast halen. Van het bergen en transporteren tot het zorgen voor vervangend vervoer, in heel Europa. En dat doen we echt samen! Met hun chauffeurs op de weg, onze planners

Bekijk vacature »

Qlikview ontwikkelaar

Bedrijfsomschrijving Mijn klant is gevestigd in de regio Apeldoorn en een bekende speler binnen de retailbranche in Nederland. Vanuit het kantoor in Apeldoorn worden er dagelijks vele goederenstromen beheerd en gedistribueerd over de hele wereld. In totaal werken er binnen de organisatie 600 FTE en er heerst een gezellige informele werksfeer. Functieomschrijving ICT is ondersteunend binnen de organisatie. Daarom is het ICT team momenteel 18 FTE groot. Ter uitbreiding is mijn klant op zoek naar een Qlikview ontwikkelaar. De komende jaren wordt juiste informatievoorziening een steeds belangrijker speerpunt binnen de organisatie om de klantvraag zo goed mogelijk te kunnen beantwoorden.

Bekijk vacature »

Sr React JS Developer ICT

Voor wie je gaat werken: WR zoekt voor een vaste medewerker voor de volgende werkgever, je treedt gelijk in dienst bij deze werkgever: Wij ontwikkelen digitale oplossingen die bedrijven ondersteunen. Ben jij een Senior React JS Developer? Heb jij ervaring als Senior React JS Developer? Vaste baan: Sr React JS Developer ICT MBO 3.800 - 4.800 Senior React JS Developer Deze werkgever heeft een gemotiveerd team. Onze kernwaarde zijn Plezier, People, Planet en Profit. Daarom zijn zij open en eerlijk tegen elkaar. Ook hanteren wij korte communicatielijnen. Deze werkgever is een veelzijdige organisatie. Je werkt voor de eigen IT organisatie.

Bekijk vacature »

Front-end Developer

Angular Front-end Developers Technologiebedrijf gespecialiseerd in (Cloud-native) software-development, consultancy en training. AWS Select Consulting Partner en Microsoft Azure Gold Partner. Wij werken voor opdrachtgevers in de sectoren FinTech, HealthTech, Retail, Industrie en Overheid, dus variatie gegarandeerd! Wat maakt ons uniek? Onze focus op (Cloud-native) software-development in combinatie met onze persoonlijke benadering van werknemers en opdrachtevers, onze no-nonsense cultuur en de bijna onbeperkte ontwikkelingsmogelijkheden. Wij zijn op zoek naar Angular Front-end Developers met creativiteit en ervaring in front-end en mobile web-ontwikkeling. Je werkt vanuit onze vestigingen in Amsterdam, Apeldoorn, Eindhoven of Hengelo aan aansprekende projecten. Op zoek naar een zelfsturende en

Bekijk vacature »
Jan R

Jan R

12/12/2021 09:53:52
Quote Anchor link
Hi

Ik wil php tegenstanders laten berekenen maar ik kom er niet uit.
Eerst heb ik data. Komt normaal uit de database maar om hier te posten even json gebruikt. De spelers zijn gesorteerd op hun punten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[
{"id":"147","naam":"Philippe","punten":"2048","wit":"2","zwart":"2"},
{"id":"122","naam":"Thomas","punten":"2030","wit":"1","zwart":"1"},
{"id":"117","naam":"Freddy","punten":"2028","wit":"2","zwart":"2"},
{"id":"115","naam":"Eddy","punten":"2020","wit":"2","zwart":"2"},
{"id":"119","naam":"Jan","punten":"2016","wit":"2","zwart":"2"},
{"id":"123","naam":"Yvonne","punten":"1984","wit":"1","zwart":"2"},
{"id":"148","naam":"Pierre Matthys","punten":"1922","wit":"2","zwart":"1"},
{"id":"126","naam":"Jacques","punten":"1920","wit":"2","zwart":"1"}
]
//wit en zwart is het aantal keren met respectievelijke kleur gespeeld
{
    "147":{"id":"147","naam":"Philippe","aantaltegenstanders":3,"punten":"2048","tegenstanders":{"115":1,"117":0,"119":1,"122":0,"123":0,"126":1,"147":0,"148":0}},
    "122":{"id":"122","naam":"Thomas","aantaltegenstanders":2,"punten":"2030","tegenstanders":{"115":1,"117":0,"119":0,"122":0,"123":0,"126":1,"147":0,"148":0}},
    "117":{"id":"117","naam":"Freddy","aantaltegenstanders":3,"punten":"2028","tegenstanders":{"115":0,"117":0,"119":1,"122":0,"123":0,"126":1,"147":0,"148":1}},
    "115":{"id":"115","naam":"Eddy","aantaltegenstanders":3,"punten":"2020","tegenstanders":{"115":0,"117":0,"119":0,"122":1,"123":1,"126":0,"147":1,"148":0}},
    "119":{"id":"119","naam":"Jan","aantaltegenstanders":4,"punten":"2016","tegenstanders":{"115":0,"117":1,"119":0,"122":0,"123":1,"126":0,"147":1,"148":1}},
    "123":{"id":"123","naam":"Yvonne","aantaltegenstanders":3,"punten":"1984","tegenstanders":{"115":1,"117":0,"119":1,"122":0,"123":0,"126":0,"147":0,"148":1}},
    "148":{"id":"148","naam":"Pierre","aantaltegenstanders":3,"punten":"1922","tegenstanders":{"115":0,"117":1,"119":1,"122":0,"123":1,"126":0,"147":0,"148":0}},
    "126":{"id":"126","naam":"Jacques","aantaltegenstanders":3,"punten":"1920","tegenstanders":{"115":0,"117":1,"119":0,"122":1,"123":0,"126":0,"147":1,"148":0}}
}
//het nummer bij tegenstanders is het aantal al keren tegen elkaar gespeeld.


De bedoeling is dat je pas tegen elkaar gaat spelen als je nog niet tegen elkaar of zo weining mogelijk tegen elkaar al gespeeld hebt.

In bijgevoegde data is het dus mogelijk om te komen tot resultaat
Quote:
Philippe-Thomas
Freddy-eddy
Jan-Pierre
Yvonne-Jacques

Wat ik echter bedenk als code het komt nooit uit.
Manueel lukt het me wel dus zou ik het ook moeten kunnen schrijven in php toch zou je denken maar dus niet :(.

Hopelijk heeft iemand een ideetje om te helpen.

Jan
Gewijzigd op 13/12/2021 08:05:41 door Jan R
 
PHP hulp

PHP hulp

26/06/2022 13:25:01
 
Rob Doemaarwat

Rob Doemaarwat

12/12/2021 10:32:53
Quote Anchor link
Even uit de losse pols:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php

$ids
= array_keys($data); //$data is die 2e tabel
$default_scores = array_fill_keys($ids,0); //standaard tegen niemand gespeeld

foreach($data as $id => $player){ //per speler gaan bekijken
  $scores = $player['tegenstanders'];
  unset($scores['totaal']);
  $scores = array_merge($default_scores,$scores); //nu voor iedereen een score
  asort($scores); //sorteren op score (minste vooraan)
  $opponents = array_keys($scores); //tegenstanders geordend
  $opponent = array_shift($opponents); //tegenstander met minste partijen

  //verder afhandelen/opslaan/enz


}

?>
 
Jan R

Jan R

12/12/2021 11:21:49
Quote Anchor link
Sorry snap het niet.
Wie speelt nu tegen wie?
Gewijzigd op 12/12/2021 11:22:04 door Jan R
 
Rob Doemaarwat

Rob Doemaarwat

12/12/2021 13:47:26
Quote Anchor link
$id speelt tegen $opponent

Dan moet je verderop wel controleren dat zowel $id als $opponent niet meer aan iemand anders gekoppeld kunnen worden (een lijstje met $fulfilled bijhouden, en daarvoor de $id's overslaan, en deze uit $opponents halen).

Of is het dan nog weer de bedoeling dat als A tegen B of C kan spelen (beiden nog nooit tegen gespeeld), maar D al wel tegen C heeft gespeeld, dat ie dan ook nog zo wijs is om A aan C te koppelen, zodat B dan tegen D kan?
 
Jan R

Jan R

13/12/2021 08:15:51
Quote Anchor link
Tof dat je elke tegenstander op 0 partijen plaats. Ik werkte met isset
Juist dat je Totaal verwijderd. Stond op verkeerde plaats.

oorspronkelijke data aangepast.

Je basis is ongeveer hetzelfde als ik had echter ik blijf vastlopen.
ik heb ofwel onvolledige data, niet alle spelers gevonden, of kom in een eindeloze lus.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
    $ids
= array_keys($partijen);//partijen oorspronkelijke data
    {
        foreach($ids as $id) {//niemand speelt
            $speelt[$id]=false;
        }

        $i=$j=0;
        while ($i<count($ids)) {//loop door alle spelers
            $id1=$ids[$i];
            if(!$speelt[$id1]) {
                $j=0;
                while ($j<count($ids)) {//zoek tegestander
                    $id2=$ids[$j];
                    if(!$speelt[$id2]) {
                        if($id1!=$id2) {/niet tegen jezelf
                            if($partijen[$id1]['tegenstanders'][$id2]<=$verschilWZ) {// aantal parttijen < max toegelaten
                                $stappen[] = array($i,$j);//bewaar stappen om terug te keren indien lus niet volledig ok
                                $speelt[$id1]=$speelt[$id2]=true;//deze 2 spelers spelen nu wel
                                $borden[] = array($partijen[$id1],$partijen[$id2]);//bepaal bord. exact 2 spelers
                                if(alltrue($speelt)) {//eenvoudige lus welke kijkt of alle items in array true zijn
                                    break 2;// spring uit de 2 lussen
                                }
                                break;//ga naar volgende speler
                            }
                        }
                    }

                    $j++;
                }

                $j=0;
            }

            if($i==(count($ids)-1)) {//net voor einde kijken alles OK
                if(alltrue($speelt)) {
                    break;//OK dus uit lus
                }else{
                    $a = end($stappen);// niet ok stap terug
                    $i=($a[0]-1);
                    $j=($a[1]+1);
                    $speelt[$ids[$a[0]]] = $speelt[$ids[$a[0]]] = false;//spelers apelen toch niet
                    array_pop($borden);//verwijder bord
                }
            }

            $i++;
        }
    }

var_dump($borden);//wordt later opnieuw uitgewerkt :)
?>


Jan
 
Ad Fundum

Ad Fundum

15/12/2021 09:44:52
Quote Anchor link
Ik geloof niet dat ik de vraag begrijp, maar dat zal aan mij liggen.

In je voorbeeld zeg je "wit en zwart is het aantal keren met respectievelijke kleur gespeeld", en "het nummer bij tegenstanders is het aantal al keren tegen elkaar gespeeld".

Kijk ik naar Philippe, dan heeft hij 2x met wit gespeeld en 2x met zwart, dus 4x in totaal.
Maar als ik naar de tweede helft kijk, dan zie ik dat hij maar 3x heeft gespeeld, met ID's 115, 119, 126.

Hoe zit dat?
 
Jan R

Jan R

15/12/2021 13:55:33
Quote Anchor link
In de geleverde data staan enkel de spelers welke hun deelname bevestigd hebben. Ze kunnen dus ook tegen iemand anders gespeeld hebben. Totaal is i de berekening dus niet relevant maar wel nodig om te tonen in de browser.

De berekening start enkel als het aantal spelers paar is.
 
Ad Fundum

Ad Fundum

20/12/2021 21:41:35
Quote Anchor link
Ik heb in een testdatabase twee tabellen gemaakt die zouden moeten lijken op de tabellen in je eigen database:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
-- SQL dump van testdatabase

CREATE TABLE `speler` (
  `id` int(10) UNSIGNED NOT NULL COMMENT 'ID',
  `naam` text NOT NULL COMMENT 'Naam',
  `punten` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Punten'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Spelers';

INSERT INTO `speler` (`id`, `naam`, `punten`) VALUES
(115, 'Eddy', 2020),
(117, 'Freddy', 2028),
(119, 'Jan', 2016),
(122, 'Thomas', 2030),
(123, 'Yvonne', 1984),
(126, 'Jacques', 1920),
(147, 'Philippe', 2048),
(148, 'Pierre Matthys', 1922);

CREATE TABLE `wedstrijd` (
  `id` int(10) UNSIGNED NOT NULL COMMENT 'ID',
  `wit` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Wit',
  `zwart` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'Zwart'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='Wedstrijden';

INSERT INTO `wedstrijd` (`id`, `wit`, `zwart`) VALUES
(1, 147, 115),
(2, 147, 126),
(3, 122, 115),
(4, 122, 126),
(5, 117, 119),
(6, 117, 148),
(7, 115, 123),
(8, 119, 147),
(9, 119, 148),
(10, 123, 119),
(11, 148, 123),
(12, 126, 117);

ALTER TABLE `speler`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `wedstrijd`
  ADD PRIMARY KEY (`id`),
  ADD KEY `wedstrijd_speler_wit` (`wit`),
  ADD KEY `wedstrijd_speler_zwart` (`zwart`);

ALTER TABLE `speler`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', AUTO_INCREMENT=149;

ALTER TABLE `wedstrijd`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', AUTO_INCREMENT=13;

ALTER TABLE `wedstrijd`
  ADD CONSTRAINT `wedstrijd_speler_wit` FOREIGN KEY (`wit`) REFERENCES `speler` (`id`) ON UPDATE CASCADE,
  ADD CONSTRAINT `wedstrijd_speler_zwart` FOREIGN KEY (`zwart`) REFERENCES `speler` (`id`) ON UPDATE CASCADE;

Daarin kan je met een query een ranking maken van spelercombinaties die de minste wedstrijden hebben gespeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
WITH `geselecteerd` AS (
  SELECT 147 AS `id`
  UNION SELECT 122
  UNION SELECT 117
  UNION SELECT 115
  UNION SELECT 119
  UNION SELECT 123
  UNION SELECT 148
  UNION SELECT 126
)
SELECT DISTINCT
  LEAST(`speler`.`id`, `tegenstander`.`id`) AS `speler_id`,
  GREATEST(`speler`.`id`, `tegenstander`.`id`) AS `tegenstander_id`,
  COUNT(`wedstrijd`.`id`)
    OVER (PARTITION BY `speler`.`id`, `tegenstander`.`id`) AS `wedstrijden`
FROM `geselecteerd` AS `speler`
  JOIN `geselecteerd` AS `tegenstander`
    ON `speler`.`id` != `tegenstander`.`id`
  LEFT JOIN `wedstrijd`
    ON (`wedstrijd`.`wit` = `speler`.`id`
      AND `wedstrijd`.`zwart` = `tegenstander`.`id`)
    OR (`wedstrijd`.`wit` = `tegenstander`.`id`
      AND `wedstrijd`.`zwart` = `speler`.`id`)
ORDER BY `wedstrijden`;

Ik was begonnen met recursief zoeken in MySQL maar de mogelijkheden zijn beperkter dan in andere databases als PostgreSQL en het is toch nog even puzzelen. Misschien is het laatste stukje logica eenvoudiger te maken in PHP.

Overigens zijn er meer mensen die dit probleem hebben willen oplossen in SQL.
 
Jan R

Jan R

20/12/2021 23:05:07
Quote Anchor link
Bedankt maar ik heb nooit gezegd dat het in sql moest zijn :) Daarom had ik er ook een json van gemaakt.

sql loopt al vast op 1° woord. 'with'
 
Ad Fundum

Ad Fundum

27/12/2021 20:53:22
Quote Anchor link
Klopt, je zei "Eerst heb ik data. Komt normaal uit de database maar om hier te posten even json gebruikt." dus het is logischer om het dan maar meteen goed uit de database te halen. Waar heb je een database anders voor?

WITH is onderdeel van een CTE, MySQL loopt daarmee achter. Je moet minimaal MySQL 8 hebben, anders moet je de query op de ouderwetse manier herschrijven, en jezelf herhalen in het FROM statement (dat kan dan wel weer beter met PHP):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
30
31
32
SELECT DISTINCT
  LEAST(`speler`.`id`, `tegenstander`.`id`) AS `speler_id`,
  GREATEST(`speler`.`id`, `tegenstander`.`id`) AS `tegenstander_id`,
  COUNT(`wedstrijd`.`id`)
    OVER (PARTITION BY `speler`.`id`, `tegenstander`.`id`) AS `wedstrijden`
FROM
  ( SELECT 147 AS `id`
    UNION SELECT 122
    UNION SELECT 117
    UNION SELECT 115
    UNION SELECT 119
    UNION SELECT 123
    UNION SELECT 148
    UNION SELECT 126
  ) AS `speler`
  JOIN
  ( SELECT 147 AS `id`
    UNION SELECT 122
    UNION SELECT 117
    UNION SELECT 115
    UNION SELECT 119
    UNION SELECT 123
    UNION SELECT 148
    UNION SELECT 126
  ) AS `tegenstander`
    ON `speler`.`id` != `tegenstander`.`id`
  LEFT JOIN `wedstrijd`
    ON (`wedstrijd`.`wit` = `speler`.`id`
      AND `wedstrijd`.`zwart` = `tegenstander`.`id`)
    OR (`wedstrijd`.`wit` = `tegenstander`.`id`
      AND `wedstrijd`.`zwart` = `speler`.`id`)
ORDER BY `wedstrijden`;
Gewijzigd op 27/12/2021 20:54:36 door Ad Fundum
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.