lidt kræsen exsists
HejJeg skal lave et lille system hvor man kan stemme på nogen abstracts
systemet er lavet så hver dommer får nogen abstracts de skal stemme på.
Hver abstract skal vurderes på flere forskellige områder. fx originalitet eller teknisk niveau.
For at holde styr på hvilke dommere der mangler at stemme på hvad ønsker jeg naturligvis at kunne se en oversigt over hvilke abstracts den enkelte dommer er færdig med, og hvilke de mangler at stemme på...
DAtabasen er konstrueret som en normaliseret mange til mange relation med én tabel med dommere (judges), én tabel med abstracts samt en tabel der fortæller relationen mellem dem. Denne sidste indeholder judgs_id (dommerens ID), abstract_ref (ID for abstract), hvad dommeren har givet i denne stemme, samt hvilken sype stemme det er (fx om det er "originalitet" eller "teknisk niveau")
Når en dommer får en "abstract" han skal stemme på bliver der oprettet én række i relationstabellen for hver stemme han skal give. Når han ikke har stemt er stemmen sat til NULL
Hvis bare ét af områderne dommeren skal stemme på, er null, så anses abstracten for ikke at være stæmt på.
Mit problem er at jeg sidder fast med at hvis en dommer har stemt på én abstract, og ikke på en anden, så vil denne SQL sætning sætte alle de abstracts som han skal stemme på (også dem han ikke har nogen NULL stemmer i) til at være ikke fuldførste.
Uha. måske jeg skriver lidt uklart. Måske jeg skulle komme med et eksempel
Hvis vi har relationstabellen som
abstract_ref | judge_ID | vote_type_ID | vote
MTLK42 | 1 | 2 | 5
MTLK42 | 1 | 3 | 4
N5BRTZ | 1 | 2 | 1
N5BRTZ | 1 | 3 | NULL
Så har dommer '1' altså fået at vide at han skal stemme på abstract 'MTLK42' mht. spørgsmåls type 2 og 3.
Han har svaret og sbstract 'MTLK42' burde derfor angives som "færdig"
Abstract N5BRTZ mangler en stemme og er derfor "ikke færdig"
Jeg har konstrueret denne SQL til at fange de "færdige" abstracts:
SELECT distinct abstract_ref from abstract_votes WHERE judge_ID = '$judge_ID' AND NOT EXISTS (SELECT * FROM abstract_votes av WHERE vote IS NULL AND av.judge_ID = '$judge_ID' AND av.abstract_ref = abstract_ref)
og denne til at fange de "ikke færdige"
SELECT distinct abstract_ref from abstract_votes WHERE judge_ID = '$judge_ID' AND EXISTS (SELECT * FROM abstract_votes WHERE vote IS NULL AND abstract_votes.judge_ID = '$judge_ID')
men både den færdige og ikke færdige bliver fanget af nummer to SQL.
Er der noven der kan se hvad jeg gør galt?
Skriv endelig hvis jeg ikke har udtrykt mig klart...
