Hi

Ik ben bezig met mijn competitieprogramma uit te breiden naar meerdere ronden tot (voorbeeld) 10 maal iedereen tegen iedereen. Vroeger 1 of 2 keer.

Ik loop vast in het zoeken naar de her-programmatie van de partijen. Dit is vergelijkbaar met uitgestelde matchen in andere sporten zoals voetbal en basketbal. Verschil is dus niet 1 maal tegen iedereen, 1 X thuis en 1 X op verplaatsing maar tot 5 X thuis en verplaatsing.

Probleem is dus dat ik partij speler X tegen speler Y ook 5 X kan tegenkomen en dus ook 5 X moet gepland worden.
Zodra de planning is gebeurd krijg ik de gegevens terug van de 5 planningen op de 5 verschillende dagen.
Ik kan niet verwijzen naar de partij op zich want deze zijn nog niet gespeeld en hebben dus geen partij_id

Iemand een idee om dit op te lossen? Alle ideeën zijn goed. Ik kan velden/tabellen bijmaken indien nodig

Hier de query's
Ophalen speeldagen

select
    id, 
    DATE_FORMAT(datum, "%d/%m/%Y") as datumfmt,
    datum, 
    naam
from 
    TR2__volgenderondeinfo
where 
    (id_toernooi=' . $ACTIEFTOERNOOI->ID . ')'

Ophalen geplande partijen
SELECT
    r.id,
    concat(s1.voornaam," ",s1.naam) wit,
    s1.id wit_id,
    s2.id zwart_id,
    concat(s2.voornaam," ",s2.naam) zwart,
    (COALESCE((select uitslag from TR2__partijen    p2 where speler1=s1.id and speler2=s2.id and p2.ronde=p1.ronde) , "")) uitslag,
    (COALESCE((select uitsteller from TR2__partijen p2 where speler1=s1.id and speler2=s2.id and p2.ronde=p1.ronde), "")) uitsteller,
    COALESCE(o.opmerking, "") opmerking,
    p1.datum,
    p1.ronde
FROM
    TR2__spelers s1
JOIN
    TR2__spelers s2
LEFT JOIN
    TR2__volgenderonde r
    ON s1.id = r.speler1
    AND s2.id = r.speler2 
left join
    TR2__volgenderondeinfo_opmerkingen o
    on o.volgenderondeinfo_id = r.id
left JOIN
    TR2__partijen p1
    on p1.speler1=r.speler1 and p1.speler2=r.speler2
where 
    r.ronde=' . $rij['id'] . ' AND #id volgens volgenderondeinfo
    true
order by 
    wit, 
    zwart;


Jan
Jan R op 23/07/2023 09:05:50

Ik kan niet verwijzen naar de partij op zich want deze zijn nog niet gespeeld en hebben dus geen partij_id

Die "dus" is geen vanzelfsprekendheid, maar een beperking die je jezelf hebt opgelegd.

Kun je bijvoorbeeld een tijdelijke ID introduceren die je UPDATE nadat de partij is gespeeld?
Ward van der Put op 23/07/2023 10:17:29

Kun je bijvoorbeeld een tijdelijke ID introduceren die je UPDATE nadat de partij is gespeeld?

En hoe zie je dat?

Ik heb zelf al gedacht om ALLE partijen in te brengen bij het maken van het toernooi maar gezien het aantal spelers niet altijd vast ligt is dit bijna onmogelijk of moet volledig herrekend worden bij het wijzigen van de volgorde van de spelers en bij toevoegen verwijderen van spelers.

Overkill :)

FROM
TR2__spelers s1
JOIN
TR2__spelers s2

weet je zeker dat hier geen ON achter moet?
Nee het is een "cross join". Zoals vermeld iedereen tegen iedereen.

Reageren