een standaard record

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

26/02/2022 12:02:43
Quote Anchor link
Is er een mogelijkheid om eenvoudig 1 standaard record te hebben.
Er zijn een 60-tal toernooien verspreid over 2 clubs.
Elke club mag slechts 1 standaard toernooi hebben. Meestal dat van het lopende jaar.
In de toernooi-eigenschappen is er een veld standaard.
Nu voor ik 2 querys uit.
1. stel alles op niet standaard
2. stel toernooi met id ### als standaard.

Kan dit eenvoudiger?

Jan
 
PHP hulp

PHP hulp

29/03/2024 08:41:27
 
Frank Nietbelangrijk

Frank Nietbelangrijk

26/02/2022 12:09:59
Quote Anchor link
Dat ligt er aan wat de logica is die bepaalt welk id als standaard ingesteld moet worden. Dat gezegd hebbende denk ik dat wat je doet gewoon prima is en waarschijnlijk leesbaarder dan een query met een hoop if a then b gedoe...

Toevoeging op 26/02/2022 12:16:08:

Ook zou je nog kunnen nadenken over het gebruik van een multiquery.
Als het van belang is dat er geen andere query (van een ander) tussen jouw twee queries komt dan kun je ook nog een MySQL Transaction gebruiken.
 
Ward van der Put
Moderator

Ward van der Put

26/02/2022 12:58:29
Quote Anchor link
Waarin verschilt het "jaarlijkse standaardtoernooi" van alle andere toernooien?
 
Ad Fundum

Ad Fundum

26/02/2022 16:33:35
Quote Anchor link
Als je het ID van het standaardtoernooi al weet, kan je het zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
UPDATE toernooi SET standaard = (id = $1)
WHERE jaar = 2022

En als je meer complexiteit wilt toevoegen, kan je CASE WHEN gebruiken in SQL.
Gewijzigd op 26/02/2022 16:33:54 door Ad Fundum
 
Jan R

Jan R

26/02/2022 17:58:40
Quote Anchor link
Ward van der Put op 26/02/2022 12:58:29:
Waarin verschilt het "jaarlijkse standaardtoernooi" van alle andere toernooien?

Er is geen "jaarlijkse standaardtoernooi". Er is een standaard toernooi

Ad Fundum op 26/02/2022 16:33:35:
Als je het ID van het standaardtoernooi al weet, kan je het zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
UPDATE toernooi SET standaard = (id = $1)
WHERE jaar = 2022

En als je meer complexiteit wilt toevoegen, kan je CASE WHEN gebruiken in SQL.

Nee, dit kan niet want dan zouden er na verloop van tijd meerdere standaard toernooien zijn.

Jaar is niet van toepassing. De standaard kan ook van vorige jaren zijn. of er kunnen meerdere per jaar zijn
 
Ward van der Put
Moderator

Ward van der Put

26/02/2022 18:18:59
Quote Anchor link
Wat is een "standaardtoernooi"?

Ik herhaal de vraag niet zozeer omdat je die niet beantwoordt, maar vooral omdat het antwoord een oplossing in beeld kan brengen.

Je hebt in één tabel per definitie namelijk allemaal gelijksoortige objecten. In jouw geval is er echter één afwijkend. Wat is dan die afwijking?

Het is allesbehalve een standaard, want dan zou die standaard voor veel meer objecten gelden. Wat is je doel met die afwijking?

Een vervolgvraag zou kunnen zijn of die afwijking dan überhaupt wel in deze tabel thuishoort, maar zo'n vraag is pas aan de orde als we weten welk afwijkende gedrag je probeert te modelleren. Waarom wil je die afwijking voor alle toernooien bijhouden terwijl deze voor slechts één toernooi geldt?
 
Jan R

Jan R

26/02/2022 19:31:03
Quote Anchor link
Dit is gewoon het toernooi welke door te toernooileider als standaard gesteld wordt.
Meestal is dit het toernooi welke nog niet gedaan is.
Dit toernooi wordt dan geopend (getoond) bij het openen van de website tenzij de kijker eerst zelf een toernooi gekozen heeft.

de 4 mogelijkheden zijn dus:
keuze door de gebruiker
* meegegeven in de url trn=id al dan niet array (cookie inhoud=id)
* opgeslagen na selectie in een cookie. Ook hier kan het een array zijn (cookie inhoud=id indien nummer anders negeren)
* Gebruiker kiest om steeds het standaard toernooi te openen. (cookie inhoud=standaard)
Niet gekozen door de gebruiker
* Het standaard toernooi opent

jan
 
Ward van der Put
Moderator

Ward van der Put

27/02/2022 09:23:03
Quote Anchor link
Jan R op 26/02/2022 19:31:03:
Dit is gewoon het toernooi welke door te toernooileider als standaard gesteld wordt.

Het standaardtoernooi is dus geen eigenschap van alle toernooien, maar van de toernooileider.
Jan R op 26/02/2022 19:31:03:
de 4 mogelijkheden

Bij 3 van die 4 mogelijkheden bepaalt een entiteit buiten de tabel hoe data moet worden getoond. Beschouwen we de toernooileider ook als een gebruiker, dan zijn het er zelfs 4.

Je moet het standaardtoernooi dus niet opslaan in de tabel met toernooien, maar ergens daarbuiten. De tabel met data die van een gebruiker de toernooileider maakt, is daarvoor een goede kandidaat.

We kunnen dit vergelijken met een andere situatie: het is alsof je nu alle adressen van de Benelux opslaat en bij één enkel adres een schakelaar omzet: "Dit is ons adres!" Maar het standaardadres is geen eigenschap van die adressen, maar van de bewoner.
 
Jan R

Jan R

27/02/2022 10:33:22
Quote Anchor link
'T ja normalisatie h?. Gewoon niet bij stilgestaan ????

Ik zal het veld verplaatsen naar de tabel clubs. Zal wel weer wat werk vragen.

Bedankt. Jan

Toevoeging op 27/02/2022 10:34:31:

Bij die vraagtekens stond een imoticon
 



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.