31. januar 2010 - 23:40Der er
10 kommentarer og 1 løsning
SQL til at finde alle der har deltaget på givne kurser
Jeg skal bruge en sql der kan vise hvilke personer der opfylder givne krav vedr. deltagelse på et dynamisk antal kurser.
Tabeller og deres væsentligste felter:
t_person.id t_person.navn
t_kursus.id t_kursus.navn
t_kursusAfholdelse.id t_kursusAfholdelse.dag
t_kursusAfholdelseDeltagere.id t_kursusAfholdelseDeltagere.kursusId (FK til t_kursus.id) t_kursusAfholdelseDeltagere.personId (FK til t_person.id)
t_certificering.id t_certificering.navn
t_certificeringKursusKrav.id t_certificeringKursusKrav.CertificeringId (FK til t_certificering.id) t_certificeringKursusKrav.kursusId (FK til t_kursus.id)
Jeg definerer således i t_certificering forskellige klasser af certificering (guld, sølv, bronze) I t_certificeringKursusKrav angiver jeg så de krævede kombinationer af kurser som giver et certificet ekempelvis, hvis guld certifikat kræver kursus 1, 2 og 3, sølv kursus 1 og 2, og bronze kursus 4 så ville jeg oprette de følgende 6 rækker i t_certificeringKursusKrav
Det vil jeg da gerne give et bud paa hvis jeg kan blive sikker paa at forstaa det med kursuskombinationer og certifikater. fra det du kort sketserer kan jeg se adskillige muligheder.
Fra dit eksempel kunne jeg gaette at du har kursus-raekker saaledes at kursus 1 ikke giver certifikat men er indgangskrav for kursus 2 der giver soelv og som er indgangskrav til kursus 3 der giver guld. Er det korrekt? Har du saa adskillige saadanne raekker saa en person for eksempel kan have guld i livredning og soelv i orientering og kursus 1 i tovvaerksarbejder? Og saa synes du derudover at have enkeltkurser der giver bronze saasom kursus 4.
Hvis ovenstaaende er korrekt saa er en konsekvens at en person ikke kan have guld i et 'fag' med mindre personen ogsaa har soelv i samme fag, men en person kan have guld i livredning og soelv i orientering.
Lad os saa antage at person1 har guld (og derfor soelv) i livredning, soelv i orientering, bronze i tovvaerksarbejde, skopudsning, og frikadellelavning hvilket resultat vil du saa have?
Skal der staa: Person1 guld(1), soelv(2) (livredning og orientering), bronze(2)
eller Person1 guld(1), soelv(1) (for livredning er soelvet indeholdt i guldet) bronze(2)?
eller simpelthen at person1 har guld i et eller flere fag plus soelv i et eller flere andre fag plus bronze i et eller flere igen andre fag? Saa person1 guld, soelv og bronze?
Men i det sidste tilfaelde, hvis person2 saa har guld i livredning og orientering og saaledes er laengere fremme end person1 saa bliver statestikken person1 guld og soelv, person2 guld hvilket kunne synes at person2 er bagud.
Summa summarum, fortael mere om kurser, certifikater, og hvad resultat du vil se, saa skal jeg komme op med en SQL query.
Din tanke om at der er tale om en kursusrække er spændende og godt set. Det er dog ikke tanken at der skal være den form for trin i certificeringen.
Jeg har blot nævnt tre certificeringer, guld, sølv og bronze, men der skal kunne tilføjes flere eksempelvis kunne man tænke sig certificeringen: "skopudser" bestod af tre kurser: sko-snøring, skopudsning og besøg på skofabrik.
Altså at skal man kunne oprette nye kurser og nye certificeringer dynamisk.
Nej, jeg beklager, det kan jeg ikke umiddelbart finde ud af. Det kraever metoder som det er for laenge siden jeg har arbejdet med.
Men spoergsmaalet interesserer mig nok til at jeg vil laese op paa det og proeve at loese det om et par dage hvis det til den tid stadig er aktuelt (og der ikke er andre eksperten medlemmer der svarer forinden.)
Hvis det skal loeses i sql skal jeg i gang med stored procedures som der kun er begraenset support for i mit mysql system. Hvis det ikke lykkedes saa maa jeg nok ty til php for procedurerne med data hentet fra mysql hvis det er i orden.
Fortael mig om jeg skal gaa i gang eller om det i mellemtiden er lige meget.
I saafald maa jeg hellere bakke ud. Det er ikke realistisk at jeg finder en loesning. Jeg har prioriteringskonflikter. Jeg haaber du finder hjaelp paa anden maade.
Dont have much time right now but if you can send a dB with tables/data then I'll see if I can find a bit of time to see if I can find a solution (no guaranties).
spejder-leon, forventer du flere indlaeg paa denne traad? Friske indlaeg er sjaeldne paa spoergsmaal der er en uges tid gamle og uden (synlig) aktivitet i adskillige dage. Med mindre der er "baggrundsaktivitet" i gang (jeg saa et tilbud fra et andet medlem om at kikke paa det hvis han kunne faa tables/data) vil jeg foreslaa at du lukker spoergsmaalet. Det giver god orden, og saa staar det ikke laengere som aabent i min liste af indlaeg. Du vil jo saa nok skulle give dig selv pointsene, men saa har du dem og kan give dem hvis du senere faar resultat fra anden side.
spejder-leon, jeg proever lige en gang mere. Du oprettede dette spoergsmaal og jeg engagerede mig i det med hensigten, frivilligt og gratis, at bidrage til loesning af problemet. Selv om det ikke lykkedes mig, saa gjorde jeg en indsats, og jeg haaber stadig at du nu vil lukke spoergsmaalet (ved selv at oprette et svar og acceptere det) og ikke lade mig blive haengende i et evigheds-aabent spoergsmaal.
Tak fordi du endelig fjernede spoergsmaalet fra min liste over indlaeg der er aabne.
Ja, jeg synes det er urealistisk at forvente friske indlaeg paa et spoergsmaal oprettet for mere end et halvt aar siden. Saa er det da bedre at lukke og saa oprette et nyt spoergsmaal (som Eksperten tillader for spoergsmaal der er mere end en uge gamle.)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.