stand competitie uitrekenen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Junior Front end developer

Functie Als Front end developer binnen onze organisatie ga jij je bezig houden met het bouwen van de user experience van de webapplicaties. Je bent verantwoordelijk voor het vertalen van concepten, briefings en designs naar werkende functionaliteit. Hierbij zorg je ervoor dat applicaties betrouwbaar, veilig en toekomstbestendig zijn en een goede architectuur hebben en behouden. Verder denk je actief na- en mee over nieuwe ontwikkelingen en functionaliteiten om zo elke dag de klantervaring weer te verbeteren. Dit doe je natuurlijk niet alleen maar in een development team. Het team bedraagt momenteel 4 man bestaande uit 2 devops engineers en 2

Bekijk vacature »

Product Developer (M/F), Fulltime 40 h/week

A global Plantbased revolution – that is our dream. Maximising the protein transition – that is our mission. Producing and developing sustainable and delicious products – that is what we do. Ojah is a fast growing company with a mission and has the ambition to be the world leader in its field. To support this growth we are hiring new colleagues. People that would like to make a difference and dare to dream big. With currently a 150 colleagues proudly working on our exceptional products. Working in a dynamic surrounding that runs full speed ahead. We need you! Product Developer

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

Bekijk vacature »

Full Stack Developer

Dit ga je doen Ontwikkelen van Product Informatie Management (PIM) systemen; Werken aan zowel grotere als kleine projecten voor toonaangevende klanten binnen o.a. de retail; Verantwoordelijk voor de front-end werkzaamheden; Naast de front-end werk je ook aan de backend. Hier ga je werken Als Full Stack Developer komt je te werken binnen een vooruitstrevende organisatie die Product Informatie Management (PIM) systemen levert aan hun klanten. Hun klanten zijn toonaangevende bedrijven binnen o.a. de retail. De organisatie zit gevestigd in regio Zwolle en bestaat uit zo'n 35 medewerkers, waarvan 30 IT. Je komt te werken binnen één van de zelfsturende development

Bekijk vacature »

Embedded Software Developer

Functie omschrijving Ben jij een Embedded Software Developer die affiniteit heeft met de allernieuwste technieken? Voor een mooi softwarebedrijf in omgeving Gouda zijn wij op zoek naar een Embedded Software developer. Binnen deze rol houdt jij je bezig met alle werkzaamheden die nodig zijn om een functionaliteit te bouwen. Denk aan ontwerpen, architectuur, programmeren en algoritmes. Je voert test en validatie werkzaamheden uit bij de implementatie bij de klant. Ben jij enthousiast en een echte team player? Lees dan snel verder en laat wat van je horen! Bedrijfsprofiel Onze opdrachtgever bestaat uit een groot aantal creatieve en ambitieuze ontwikkelaars. Ze

Bekijk vacature »

Fullstack Software Developer

Functieomschrijving Voor een ambitieuze werkgever in regio Roosendaal zijn wij op zoek naar een Full Stack C#.NET Developer. Als software programmeur ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Verder ontwikkelen en onderhouden van webapplicaties, dashboards en apps voor de eigen IOT-oplossingen; Testen en goedkeuren van de software; Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks,

Bekijk vacature »

TypeScript developer (tot € 6.000, - bruto pe

Functie Om bovenstaande ambities waar te kunnen maken zijn ze op zoek naar een ervaren Typecript developer die niet alleen zichzelf verder ontwikkelt, maar het ook leuk vinden om op termijn meer junior collega’s op pad te helpen. Je zult aan de slag gaan met het migreren van hun bestaande UI in Angular. Maar ook het ontwikkelen van een mobiele app. Hierbij hechten ze veel waarde aan User Experience en kiezen ze duidelijk voor kwaliteit i.p.v. snelheid. Je krijgt dus de ruimte om vanuit gedegen onderzoek te werk te gaan en het borgen van kwaliteit staat hoog in het vaandel.

Bekijk vacature »

Software ontwikkelaar ASP .Net / C#

Functie omschrijving Gezocht! Software ontwikkelaar. Ben jij bekend met termen als ASP .Net, C# en SQL? Ben jij op zoek naar een afwisselende en uitdagende IT-functie binnen de agrarische sector? En omschrijf jij jezelf als zelfstandig, enthousiast en proactief? Dan hebben wij de perfecte functie voor jou! Als Software ontwikkelaar binnen deze organisatie ben je samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Je gaat hierbij bijdragen aan de vertaling van klantwensen naar effectieve softwareoplossingen. Verder bestaan je werkzaamheden uit: Technische uitwerking van de business

Bekijk vacature »

Senior Java developer

Dit ga je doen Jouw taken als Senior Java Developer zijn: Het maken van strategische keuzes omtrent de nieuwbouw van applicaties; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java FX, JDBC, SQL, REST, Jax-RS, JSON, Maven, JUnit en Spring (boot)); Reviewen van code en feedback geven op collega developers; Analyseren en oplossen van bugs/incidenten door het onderlinge verband te kunnen leggen van verschillende losstaande systemen. Hier ga je werken Het bedrijf waar je als Senior Java Developer komt te werken staat internationaal bekend om het testen van bodemstructuren door middel van echotechnieken en beeldherkenning.

Bekijk vacature »

Front End Ontwikkelaar (React)

In het kort Als front end developer ga je aan de slag met maatwerkprojecten voor onze klanten. Denk bijvoorbeeld aan het toevoegen van een machine aan een database of het corrigeren van formulieren voor ingestuurde orders. Voorbeeld van zo’n project is Smart Link. De projecten waar je op ingezet kunt worden liggen binnen het technische domein waar jij als front end developer een grote rol speelt om samen met je back end collega’s de juiste oplossingen te leveren. please note that this particular role requires fluent Dutch language skills. Dit vind je leuk om te doen Het omzetten van designs

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Full stack developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Robot Programmeur

Een verantwoordelijke baan met leuke uitdagingen. Heb jij ervaring met het programmeren van robots? Kan jij goed samenwerken met collega's die verschillende specialisaties hebben? Ben je oplossingsgericht, analytisch en flexibel? Ga dan aan de slag als Robot Programmeur bij Gibas in Nijkerk! Als Robot Programmeur kom je te werken bij Gibas. Dat betekent dat je gegarandeerd meewerkt aan unieke oplossingen in productieprocessen. Bij elk project moet er opnieuw geëngineerd en geprogrammeerd worden. Dat maakt jouw werk uitdagend! Voordat je robots gaat programmeren komt er het volgende bij kijken: De opdracht gaat van de afdeling Sales naar de afdeling Operations door

Bekijk vacature »

Junior .NET Software Developer

Dit ga je doen Software development met behulp van C# .NET en / of PHP, je mag zelf kiezen waar jij je in wil specialiseren Meedenken over het nieuwe pakket, waar moet het aan voldoen? Unit-, integratie- en diverse andere tests schrijven en uitvoeren Nauw samenwerken met je IT collega's zoals Testers, Developers, DevOps Specialisten en Architecten Jezelf ontwikkelen met behulp van trainingen en cursussen Hier ga je werken Onze klant, een grote speler in de medische sector, is op zoek naar een enthousiaste junior (of meer ervaren) Software Developer die klaar is voor een nieuwe stap in zijn of

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Capelle ad Ijssel Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Een deel van jouw werkzaamheden: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps en Power BI.

Bekijk vacature »

Pagina: 1 2 3 volgende »

Jo Immanuel

Jo Immanuel

06/08/2013 13:21:29
Quote Anchor link
Beste forumleden,

Ik ben bezig met het maken van een competitie. Ik heb hier een tijdje geleden al een paar vragen over gesteld.

Ik ben begonnen met het maken van een (relationele) database. Ik heb onder andere de volgende tabellen:
- tabel clubs (PK: clubID)
- tabel spelers (PK: spelerID)
- koppeltabel speler/clubs (FK's: clubID en spelerID)
- tabel wedstrijden (PK: wedstrijdID, FK's: clubID (2x), datum en tijd, speelronde)
- tabel doelpunten (PK: doelpuntID, FK's: wedstrijdID, clubID en spelerID)

Nou is het volgens de algemene moderne regels van database-inrichting dus de bedoeling dat je geen dubbele gegevens in je database opslaat. Daarom dus ook dat je in de tabel wedstrijden geen doelpunten en uitslagen (en resulterende punten voor de stand in de competitie) bijhoudt. De uitslag van een bepaalde (of alle) wedstrijd(en) haal je uit de tabel doelpunten.

Klinkt allemaal goed en logisch natuurlijk, maar voor een beginnende sql/php-er zoals mij, heb ik wel een beetje het gevoel dat ik het mezelf zo wel heel moeilijk aan het maken ben. (Vind ik overigens ook niet erg, want dan leer je er wel veel van...) Vooral wanneer het aankomt op de berekening van de stand in een competitie.

Ik wil zoiets krijgen:

(positie)(naam club)(#wedstrijden)(#punten)(doelpuntensaldo)
1. Ajax 4 12 +9
2. PSV 4 11 +7
3. Feyenoord 4 11 +5
etc.

In principe (/in grote lijnen) lijkt het mij dat je een stand van de competitie als volgt middels sql query ophaalt:

Select clubnaam,
from tabel clubs,
Order by #punten, doelpuntensaldo

Maar dan ben ik er nog niet, want er moet ook gebruik worden gemaakt van de tabellen wedstrijden en doelpunten. De informatie uit die tabellen bepalen namelijk het totaal aantal punten en doelpunten waarop gerangschikt moet worden.

De Sql-query zou dan in grote lijnen zoiets moeten zijn als:

Select clubnaam, #wedstrijden, #punten, doelpuntensaldo
form tabel clubs,
(en dan met joins de tabellen wedstrijden en doelpunten koppelen)
Order by #punten, doelpuntensaldo

Maar volgens mij kun je #wedstrijden, #punten en doelpuntensaldo helemaal niet in een select statement gebruiken. Ze komen immers niet als kolommen in een tabel in mijn database voor. Die moeten dus uitgerekend (met PHP?) worden.

En dan wordt het voor mij toch vrij ingewikkeld allemaal om te scipten.

Het lijkt me dat dan de volgende dingen in het scipt gedaan moeten worden:

1. In tabel doelpunten moet er bij elke wedstrijd gekeken worden hoeveel doelpunten de thuisclub gemaakt heeft en hoeveel doelpunten de uitclub.
2. Dan moet ik een statement maken dat
Als # doelpunten thuisclub > # doelpunten uitclub, dan 3 punten voor de thuisclub
Als # doelpunten thuisclub < # doelpunten uitclub, dan 3 punten voor de uitclub
Als # doelpunten thuisclub = # doelpunten uitclub, dan 1 punt voor de thuisclub en 1 punt voor de uitclub.
3. dan moet dat scriptje dus elke gespeelde wedstrijd in de tabel doelpunten nalopen, en daar de wedstrijdpunten voor uitrekenen, deze tijdelijk in haar geheugen ergens opslaan (met cache?), dan voor elke club allemaal optellen en weer onthouden.
4. Dan ook nog de gemaakte doelpunten voor en tegen uit de tabel doelpunten voor elke club bij elkaar optellen en tijdelijk (met cache?) in het geheugen opslaan.
5. Dan ook nog bepalen dat bij gelijk aantal wedstrijdpunten het doelpuntensaldo bepalend is voor de stand.

Erg ingewikkeld allemaal voor dus mij.

Kan iemand mij misschien een beetje proberen te helpen?
Gewijzigd op 06/08/2013 13:25:04 door Jo Immanuel
 
PHP hulp

PHP hulp

27/05/2026 10:33:25
 
Jeroen Jansen

Jeroen Jansen

06/08/2013 14:40:45
Quote Anchor link
Ik zou persoonlijk nog een tabel score toevoegen, waarin je de uitslag opslaat (socre_id, score_wedstrijd, score_thuis, score_uit).
De stand kun je dan op de volgende manier in sql ophalen:
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
SELECT    clubs.clubid,
          clubs.clubnaam as Teamnaam,
          coalesce(SUM(x.gespeeld),0) as Wedstrijden,
              coalesce(SUM(x.winst),0) as Winst,
              coalesce(SUM(x.gelijk),0) as Gelijk,
              coalesce(SUM(x.verlies),0) as Verloren,
              coalesce(SUM(x.punten),0) as Punten,
              coalesce(SUM(x.voor),0) as Voor,
              coalesce(SUM(x.tegen),0) AS Tegen,
               coalesce(SUM(x.voor),0) - coalesce(SUM(x.tegen),0) AS Saldo
FROM      clubs
left join

(
    SELECT wedstrijd.wedstrijd_thuisteam as team_id
    , 1 as gespeeld
    , IF(score.score_thuis > score.score_uit, 1,0) as winst
    , IF(score.score_thuis < score.score_uit, 1,0) as verlies
    , IF(score.score_thuis = score.score_uit, 1,0) as gelijk
    , CASE WHEN score.score_thuis > score.score_uit THEN 3 WHEN score.score_thuis < score.score_uit THEN 0 ELSE 1 END as punten
    , score.score_thuis as voor
    , score.score_uit as tegen
    FROM score INNER JOIN wedstrijd ON score.score_wedstrijd = wedstrijd.wedstrijd_id

    UNION ALL

    SELECT wedstrijd.wedstrijd_uitteam as team_id
    , 1 as gespeeld
    , IF(score.score_thuis < score.score_uit, 1,0) as winst
    , IF(score.score_thuis > score.score_uit, 1,0) as verlies
    , IF(score.score_thuis = score.score_uit, 1,0) as gelijk
    , CASE WHEN score.score_thuis < score.score_uit THEN 3 WHEN score.score_thuis > score.score_uit THEN 0 ELSE 1 END as punten
    , score.score_uit as voor
    , score.score_thuis as tegen
    FROM score INNER JOIN wedstrijd ON score.score_wedstrijd = wedstrijd.wedstrijd_id

) as x ON clubs.clubid = x.team_id
group by clubs.clubid
order by punten desc, wedstrijden asc, saldo desc, voor desc, tegen asc
Gewijzigd op 06/08/2013 14:42:57 door Jeroen Jansen
 
Erwin H

Erwin H

06/08/2013 14:56:37
Quote Anchor link
Jeroen Jansen op 06/08/2013 14:40:45:
Ik zou persoonlijk nog een tabel score toevoegen, waarin je de uitslag opslaat (socre_id, score_wedstrijd, score_thuis, score_uit).
De stand kun je dan op de volgende manier in sql ophalen:

Dat zou ik alleen doen als het een aanzienlijke performance verbetering oplevert (waarvan ik zo niet kan zeggen of het nodig is). De reden om het niet te doen is de reden die de TS zelf al gaf: het levert je dubbele data op.
Jo Immanuel op 06/08/2013 13:21:29:
In principe (/in grote lijnen) lijkt het mij dat je een stand van de competitie als volgt middels sql query ophaalt:

Ik zou de punten die je gaf iets anders opstellen (bottom up):
1) bepaal per wedstrijd de uitslag, het aantal punten (uit/thuis) en het doelsaldo (uit/thuis)
2) bepaal per club de gespeelde wedstrijden en het daarin behaalde resultaat (punten, totale doelsaldo) en sommer het
3) sorteer de hele mikmak

Zo op het eerste gezicht moet dit kunnen in 1 query. Wel een behoorlijk complexe query en niet in een paar regels (meerdere joins), maar ik denk dat het mogelijk. Probeer echter eerst punten 1 en 2 afzonderlijk te doen.
 
Jo Immanuel

Jo Immanuel

06/08/2013 15:13:03
Quote Anchor link
He Jeroen,

Bedankt voor je antwoord. Ik ben momenteel niet in staat om hem uit te proberen. Maar dit is helemaal sql en geen php niet?

Mij is wijsgemaakt dat het beter is om dit middels php te doen, onder meer ivm onderhoudbaarheid van de database. (wat is trouwens beter voor performance?)

Doe je het toch met een extra tabel 'score' is het dan ook mogelijk dat je zon tabel zichzelf automatisch laat vullen? Dus, dat je een soort hulptabel score hebt waar voor elke wedstrijd een score (regel) is en die zn gegevens haalt uit de andere tabellen?

tabel wedstrijdscore (PK: scoreID, FK: wedstrijdID) en de volgende 4 kolommen: '#doelpunten thuisclub', '#doelpunten uitclub', '#punten thuisclub', '#punten uitclub'.

Is het dan ook mogelijk om de boel zo in te richten dat de velden van die laatste vier kolommen automatisch gevuld worden aan de hand van de vulling van de tabel doelpunten?

Waarschijnlijk zal dit vanuit het oogpunt van de geldende regels wat betreft databases allemaal wel een doodzonde zijn, maar ik denk wel dat zoiets de berekening van een stand een stukkie makkelijk maakt zonder dat je het extra tijd kwijt bent aan databasevulling.
 
Jeroen Jansen

Jeroen Jansen

06/08/2013 15:28:23
Quote Anchor link
Jo,

mijn oplossing geeft inderdaad puur op SQL de stand.
Je kunt inderdaad wel de score laten vullen op basis van de waarden in de tabel doelpunten, maar let op dat er ook eigen doelpunten kunnen zijn (hoe handel je die in je huidige opzet af?).
In mijn oplossing heb je inderdaad wel dubbele gegevens, maar in mijn eigen opzet heb ik er redelijk wat voordeel (gemak) van door met een aparte tabel voor de scores te werken en gaat het ook redelijk snel (al is dat met een database met daarin op dit moment 3500 wedstrijden verdeeld over zo'n 30 competities niet zo heel zwaar)
 
Jo Immanuel

Jo Immanuel

06/08/2013 15:41:08
Quote Anchor link
Hallo Erwin,

Ja, ik ben dus nog steeds een noob wat betreft sql/php. Dus dit gaat allemaal wel een beetje hard voor mij.

Jij zegt dat het allemaal wel in 1 (comlexe) sql query past. Maar volgens mij heb je daar toch ook php voor nodig? Als ik bijvoorbeeld per wedstrijd de uitslag, het aantal punten (uit/thuis) en het doelsaldo (uit/thuis) ga bepalen, dan moet ik dat uit mijn tabel doelpunten halen. En dan moet je toch dingen gebruiken als "if #doelpunten thuisclub > #doelpunten uitclub dan drie punten voor thuisclub etc.
Kan dat allemaal met sql?

En wat ik helemaal moeilijk te bevatten vind is dat het allemaal (dus punt 1 en 2) gecombineerd en (vooral) tijdelijk onthouden kan worden en je het uiteindelijk kan rangschikken.

Ik als leek denk dat behoorlijk wat performace gaat kosten. Ook wordt het voor mij heel moeilijk om die complexe query te gaan fabriceren. Ik vind een joint in een query al best lastig.

Zon idee wat hierboven geopperd is (dus met een extra tabel wedstrijduitslag (of eventueel extra uitslagenkolommen in de tabel wedstrijden)) zou de boel toch al wat makkelijker maken denk ik. Heb je misschien wat meer (dubbele informatie), maar is dat nou zo erg? En al helemaal niet als je het zo weet in te richten dat die extra uitslagtabel (of die extra uitslagkolommen) automatisch gevuld worden. Kost het je niet meer werk om die database te onderhouden.
 
Erwin H

Erwin H

06/08/2013 15:50:06
Quote Anchor link
Jo Immanuel op 06/08/2013 15:41:08:
Jij zegt dat het allemaal wel in 1 (comlexe) sql query past. Maar volgens mij heb je daar toch ook php voor nodig?

Nee, ik denk dat het in 1 keer kan in een query. Ik heb het niet helemaal uitgewerkt, maar zo te zien kan het wel. Daarmee hoef je dus niets te 'onthouden'.
Jo Immanuel op 06/08/2013 15:41:08:
Ik als leek denk dat behoorlijk wat performace gaat kosten. Ook wordt het voor mij heel moeilijk om die complexe query te gaan fabriceren. Ik vind een joint in een query al best lastig.

Mogelijk dat het performance technisch een probleem wordt, dat is zo niet in te schatten (dat wordt namelijk ook bepaald door de grote van je tabel, de server waar het op draait etc). In eerste instantie zou ik echter altijd gaan voor de beste oplossing (lees: geen dubbele data en oplossing puur in SQL) en alleen als dat niet haalbaar is de alternatieven gaan bekijken.

Overigens is het een JOIN, een joint rook je....
Jo Immanuel op 06/08/2013 15:41:08:
Zon idee wat hierboven geopperd is (dus met een extra tabel wedstrijduitslag (of eventueel extra uitslagenkolommen in de tabel wedstrijden)) zou de boel toch al wat makkelijker maken denk ik. Heb je misschien wat meer (dubbele informatie), maar is dat nou zo erg? En al helemaal niet als je het zo weet in te richten dat die extra uitslagtabel (of die extra uitslagkolommen) automatisch gevuld worden. Kost het je niet meer werk om die database te onderhouden.

Nee, wat mij betreft is dat geen mooie oplossing en daarmee ook geen betere. Het is voor een beginner misschien 'makkelijker', maar de makkelijkste weg levert je vaak later problemen op. Bij databases is zo ongeveer het ergste probleem dat je kan krijgen is inconsistente data. Stel dat op zeker moment in je standen tabel 3-0 voor een wedstrijd staat, maar in je doelpunten tabel maar 2 doelpunten voor die wedstrijd. Dan is het moeilijk te achterhalen waar het fout ging.

Overigens is een automatische databasevulling een utopie. Dat bestaat niet. Je zou met triggers kunnen werken, je zou in php iets kunnen schrijven, maar dat kan altijd een keer mis gaan en dan zit je dus met inconsistente data.

Dus ik zou niet gaan voor de oplossing van Jeroen, tenzij het voor de performance echt nodig is. Maar mijn mening is ook maar een mening.
 
Jo Immanuel

Jo Immanuel

06/08/2013 15:53:38
Quote Anchor link
Hallo Jeroen,

Eigen doelpunten moet toch geen probleem zijn?

Als je een tabel doelpunten heb dan 'boek' je een eigen doelpunt van de uitclub gewoon als een doelpunt van de thuisclub (wat het in feite ook gewoon is). Dat het een eigen doelpunt is kun je dan afleiden/halen uit het feit dat of de doelpuntenmaker niet speelt bij de scorende ploeg of je neemt een aparte kolom op waarin je aangeeft of het al dan niet een eigen doelpunt is.

Maar jij zegt dus dat het kan. Dus dat je ervoor kunt zorgen dat velden uit een bepaalde tabel automatisch gevuld worden aan de hand van de waarde van velden uit andere tabellen. Concreet dus dat bij tabel wedstrijdscore de velden #doelpunten thuisclub en #doelpunten uitclub automatisch gevuld naar aanleiding van de vulling van de tabel doelpunten. En als je een nieuw doelpunt toevoegt in die tabel doelpunten dat de vulling van de velden in tabel wedstrijdscore vanzelf mee veranderen.

Maar hoe doe ik dat dan?
 
Jeroen Jansen

Jeroen Jansen

06/08/2013 15:58:18
Quote Anchor link
Erwin,

ben het met je eens dat het beter is om de tabel score weg te laten en de uitslag te bepalen op basis van de tabel met doelpunten. In mijn database heb ik hiervoor niet gekozen omdat ik uitslagen vastleg voor een amateurvereniging, waarbij ik niet het scoreverloop weet van elke wedstrijd en daarom heb ik gekozen voor een tabel score.


Toevoeging op 06/08/2013 16:02:32:

Jo,

bij het opslaan van het doelpunt zou ik na het wegschrijven van het record een tweede sql uitvoeren die de tabel score bijwerkt.
 
Erwin H

Erwin H

06/08/2013 16:02:34
Quote Anchor link
Ah ok, dat is dan een andere situatie waarin je ook geen dubbele data hebt. In dat geval is er niets aan de hand.
 
Jeroen Jansen

Jeroen Jansen

06/08/2013 16:03:52
Quote Anchor link
Erwin,

wel gedeelte dubbele informatie (voor de teams van mijn eigen vereniging weet ik vaak wel de doelpuntenmakers), maar dat neem ik toch maar voor lief
 
Jo Immanuel

Jo Immanuel

06/08/2013 16:07:55
Quote Anchor link
Hallo Erwin,

Nou precies, daar ben ik dus ook bang voor. Voor het gevaar van een incosistente database. En automatische database vulling (waarbij het ene veld automatisch gevuld wordt naar aanleiding van de vulling van andere velden) bestaat dus blijkbaar niet (million dollar idea???).

Zou je me dan een beetje weg kunnen helpen hoe ik zon complexe sql query opbouw? Want ik ben lost.
 
Erwin H

Erwin H

06/08/2013 16:17:13
Quote Anchor link
Nee, geen million dollar idea, want dat is nu juist niet het idee van een relationele database.

Begin bij het begin voor die query. Dus pak je wedstrijden tabel en doelpunten tabel en probeer de volgende informatie eruit te halen (in 1 query dus):
- wedstrijd
- thuis club (id)
- uit club (id)
- doelpunten thuis
- doelpunten uit

Heb je dat, dan volgt stap 2:
Selecteer twee extra (vurtuele) kolommen waarin de punten staan voor de uit en thuis club (dus 0, 1 of 3).

Daarna stap 3:
Pak de clubs tabel en selecteer bij elke club het totaal aantal wedstrijden, punten en doelpunten door de net gemaakt (sub)query in stap 1 en 2, te joinen aan de clubs tabel.

Daarna stap 4:
Groupeer op club en sorteer.

Maar begin bij stap 1 :-)
 
Jo Immanuel

Jo Immanuel

06/08/2013 16:54:57
Quote Anchor link
Bedankt Erwin,

Ik ga vanavond en morgen even rustig kijken en knutselen.

Bij stap 1 dus tabel wedstrijden joinen met tabel doelpunten. En dan als uitkomst/resultaat alle? gespeelde wedstrijden met bijbehorden thuis en uitclub en bijbehorden doelpunten zodat je uiteindelijk een hele lijst krijgt?
En moeten de bij de verschillende wedstrijden behorende doelpunten bij stap 1 ook al opgeteld worden of moet alleen bij iedere wedstrijd de bijbehorende doelpuntenID's als resultaat gegeven worden?

Dat ga ik eerst proberen. De twee extra virtuele kolommen waarin de punten staan voor de uit en thuis club ga ik zeker nog hulp bij nodig hebben, maar das van latere zorg.

Even resumerend: als ik het dus goed begrepen heb maak je eigenlijk doormiddel van die sql query 1 grote samengevoegde tabel met de benodigde informatie om uiteindelijk in stap 4 te kunnen groeperen en sorteren en dat is de reden dat er geen dingen onthouden hoeven worden?


PS: million idea was natuurlijk een grapje. Aan de andere kant: zo gek is het idea nog helemaal niet, al zeg ik het zelf. Kijk, incosistente database hoeft helemaal geen probleem te zijn. Als de afgeleide velden afhankelijk zijn van andere velden en altijd mee veranderen bij verandering in die andere velden kun je zo ook geen incostente database krijgen lijkt me. (Ook best wel relationeel allemaal). Gewoon een kwestie van afschermen voor handmatige invoer (kinderslotje). Nadeel: dubbele gegevens. Voordeel: minder rekencapaciteit?
Gewijzigd op 06/08/2013 16:57:15 door Jo Immanuel
 
Erwin H

Erwin H

06/08/2013 17:02:48
Quote Anchor link
Over het resumeren: ja, dat is zo'n beetje het idee.
Of je dan al in stap 1 dingen moet gaan optellen is aan jou. Uiteindelijk wil je dat, maar bij dit soort complexere queries wil je het stap voor stap uitwerken. Ik heb je vier stappen gegeven, maar misschien maak je zelf nog wel veel meer van. Voor mij is een join maken iets wat ik dagelijks doe, maar misschien dat jij dat als aparte stap wilt hebben om zo dat eerst helemaal goed te krijgen.

Ik begrijp dat de opmerking over dat idea niet helemaal serieus was. Wat je nu echter zegt ben ik het echt niet mee eens. Inconsistente data is wel een probleem, het is een van de grootste problemen in een relationele database. Hoe dan ook wil je dat vermijden en de eerste stap daarvoor is niets dubbel opslaan. Alleen, en echt alleen, als een query dusdanig zwaar is en er geen andere optie dit kan verzachten zou ik data dubbel gaan opslaan. Dit komt echter dusdanig weinig voor dat ik er niet al te lang over zou nadenken.
Het gaat overigens ook niet over handmatige invoer perse waar het fout kan gaan. Denk ook aan updates, deletes, maar ook aan acties die halverwege mis gaan. De ene tabel wel geupdate, de ander niet. Nu heb je daar wel weer transacties voor, maar die werken ook weer niet in elke engine.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/08/2013 18:51:46
Quote Anchor link
Erwin H:
Voor mij is een join maken iets wat ik dagelijks doe

Gelukkig maar dat je het niet zoals Jo schrijft :-P

Jo, alvast een tip:
Je moet in stap 1 de doelpunten tabel 2x joinen, 1x voor de thuisclub en 1x voor de uitclub.

Ik denk dat het in dit geval ook verstandig is om voor de uitslagen een view te maken.
Daarna kan je in de query van Jeroen de tabel vervangen door de view (scheelt je stap 2, 3 en 4).

Ik sluit me trouwens aan bij de slotopmerking van Erwin, het voordeel aan performance is in dit geval nihil bij dubbele data, een paar join(tj)es meer of minder weegt niet op tegen het uithalen van allerlei capriolen om je database consistent te houden.
Gewijzigd op 06/08/2013 18:57:42 door Ger van Steenderen
 
Lendl Verschoor

Lendl Verschoor

06/08/2013 20:24:38
Quote Anchor link
Je maakt goed een koppel tabel aan, maar vervolgens doe je er niks mee.
de koppel tabel kan je weer gebruiken voor je doelpunten zodat je weet wie er van welk team heeft gescoord.
 
Jo Immanuel

Jo Immanuel

07/08/2013 13:16:33
Quote Anchor link
Ok, ik heb zojuist een aantal doelpunten ingevoerd bij tabel doelpunten, maar loop eigenlijk gelijk al tegen een probleem/vraag aan (wat betreft database-inrichting).

Hoe kan ik de tabel doelpunten het beste inrichten?

Ik ga straks om de stand te berekenen tabel doelpunten joinen met tabel wedstrijden. In tabel wedstrijden staan de clubID's van de 2 clubs die in een bepaalde speelronde en op een bepaalde datum en tijd tegen elkaar spelen. In tabel doelpunten staat in mijn (oorpsronkelijke) inrichting ook een clubID voor de club waarvoor het doelpunt is gescoord. Nu ben ik door het voorgaande in dit topic een beetje bang geworden voor data-inconsistentie. Wanneer ik bijvoorbeeld bij de invoer van een doelpunt een foutje maak bij de waarde van clubID dan krijg je denk ik een data-inconsistentie als deze waarde niet overeenkomt met 1 van de twee clubID's die bij de wedstrijdID horen die is meegegeven bij de invoer van het doelpunt.

Hoe pak ik dit het beste aan om data-incosistentie te voorkomen?

Is het mogelijk dat bij de invoer van een doelpunt in mysql, nadat je de bijbehorende westrijdID hebt ingevuld, je alleen kan kiezen tussen de clubID's van 1 van de 2 clubs die horen bij de wedstrijdID die is ingevoerd? (of is dit wederom een 'million dollar idea'?)
Of moet ik dit anders aanpakken door bijvoorbeeld geen clubID mee te geven bij het invoeren van een doelpunt maar alleen in een kolom aan te geven of het doelpunt door club "thuis" of "uit" is gemaakt?
 
Erwin H

Erwin H

07/08/2013 13:31:53
Quote Anchor link
Een oplossing is inderdaad om gewoon wedstrijd id op te geven en daarbij uit of thuis. Daarmee is volledig gedefinieerd voor welk team het doelpunt gescoord is, aangezien in de wedstrijd tabel staat wie de uit en thuis ploegen zijn. Eigenlijk, als je hier wel het club id zou opgeven krijg je alweer dubbele data wat je niet wilt.

Overigens zou het misschien ook wel kunnen om via foreign keys af te dwingen dat alleen een bepaalde combinatie van wedstrijd id en club id mag worden ingevoerd, maar dan krijg je een foreign key over meerdere velden. Om eerlijk te zijn gaat dat me ook net weer boven de pet, misschien dat Ger er een antwoord op heeft.

Volgens mij is oplossing 1 (uit/thuis, geen club id) echter voldoende en net zo efficient.
Gewijzigd op 07/08/2013 13:33:51 door Erwin H
 
Jo Immanuel

Jo Immanuel

07/08/2013 13:58:19
Quote Anchor link
Bedankt Erwin,

Ik had zelf ook al gekozen voor het invullen van "uit" of "thuis" in plaats van een wedstrijdID bij de vulling van tabel doelpunten. Lijkt me het meest veilige en bij de invoer van een doelpunt ook wel zo handig. Hoef je namelijk niet steeds de clubID van een bepaalde club op te zoeken.

Overigens ben ik nu met stap 1 bezig, maar ik weet nou eigenlijk niet precies wat voor resultaat ik zou moeten krijgen.

Is het de bedoeling dat het volgende resultaat/lijst uit mijn query krijg?

wedstrijd (wedstrijd ID), thuisclub (clubID), uitclub (clubID), doelpunt (doelpuntID), scorende club (uit/thuis)

En dan (in eerste instantie) voor elk doelpunt(ID) een regel? En later (noem het stap 1B) als ik die doelpunten uit en thuis ga optellen het volgende resultaat krijg?

wedstrijd (wedstrijd ID), thuisclub (clubID), uitclub (clubID), #doelpunten thuis (getal),#doelpunten uit (getal)

Zodat ik voor elke wedstrijd(ID) een regel heb?
Gewijzigd op 07/08/2013 14:00:52 door Jo Immanuel
 
Erwin H

Erwin H

07/08/2013 14:01:28
Quote Anchor link
Lijkt me inderdaad een goed begin om het zo te doen. Zorg eerst dat je de tabellen correct joint (ahum) en daarna maak je die sommaties.

Toevoeging op 07/08/2013 14:04:15:

Overigens let ook even op wat Ger zei:
Ger van Steenderen op 06/08/2013 18:51:46:
Jo, alvast een tip:
Je moet in stap 1 de doelpunten tabel 2x joinen, 1x voor de thuisclub en 1x voor de uitclub.

Hoewel ik me nu zit te bedenken dat het mogelijk ook wel goed gaat met 1 join.... Hmm, zal interessant worden om dat later nog uit te zoeken....
 

Pagina: 1 2 3 volgende »



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.