Avatar billede grafikeren Nybegynder
10. februar 2005 - 13:34 Der er 10 kommentarer og
1 løsning

Databaseopgave: mødekalender

Hej.

Jeg skal lave en mødekalender i ASP med en mySQL server. Jeg har styr på programmering, sql og så videre , men er blevet meget i tvivl med denne opgave. Det haster meget!

Jeg har lavet en tegning af mødekalenderen her: http://www.skovhus.de/tabel.htm

Jeg er meget i tvivl om hvordan jeg mest korrekt udskriver alle disse møder for de 8 forskellige grupper og 3 forskellige måneder. Idiotløsningen er naturligvis at lave 3*9 databaseåbninger og requeste direkte på dato og gruppeid, men det ville jo være noget rod og serverdræbende.

Hvordan løser jeg denne opgave smartest??
Avatar billede lorentsnv Nybegynder
10. februar 2005 - 13:47 #1
Hvorfor skulle du bruge 3*9 databaseconnections?
Ud fra hvad du viser, kan du samle alle møder i en tabel. Hvis du har en tabel med følgende felter:

Tabel: Møde
Felter:
Dato
GruppeID
Tekst

Sandsynligvis vil du også have andre felter i din mødetabel, såsom tidspunkt og sted, men jeg kan ikke se nogen grund til at splitte det op i for mange tabeller. Måske vil du have en tabel med Gruppe, hvor du har felterne GruppeID, Gruppenavn og eventuelt andre oplysninger om gruppen.
Avatar billede grafikeren Nybegynder
10. februar 2005 - 13:55 #2
Hej.

Jeg gør mig åbenbart ikke helt tydelig...

Følgende er de tabeller jeg har:

Tabel: Kalender
Felter: Dato, gruppeid, og en masse andet, som er irrelevant

Tabel: KalenderGrupper
Felter: Gruppeid, gruppenavn

Jeg spørger bare hvordan det løses på den mest peformance venlige måde... Konkret kode, vi er i opgave mappen. Det er muligt at der istedet skal vises seks måneder, dermed trækker det lidt hårdere på db'en.
Avatar billede grafikeren Nybegynder
10. februar 2005 - 13:58 #3
Hvis ikke jeg havde spurgt her, ville jeg nok bare lave 3 (3mdr) eller 6 (6mdr) loops. Men jeg har meget travlt, så jeg ønsker gerne lidt kode...
Avatar billede lorentsnv Nybegynder
10. februar 2005 - 14:00 #4
Unskyld, jeg tror jeg kan se din problemstilling nu. Du har behov for at lave en form for corss join af dine data, således at du får dem fordelt i din tabel.

Jeg kender desværre ikke MySQL særlig godt, men i MS SQL kudde du lave noget i retning af

Select GruppeID,
  CASE DatePart(month, Dato) WHEN 1 THEN Tekst ELSE '' END as Jan
  CASE DatePart(month, Dato) WHEN 2 THEN Tekst ELSE '' END as Feb
  CASE DatePart(month, Dato) WHEN 3 THEN Tekst ELSE '' END as Mar
From Møde
Order by GruppeID

Derved ville du få resultatet i noget der lignet et tabelformat. Der vil komme flere linier pr gruppe, men dette kunne du håndtere i din ASP-kode.
Avatar billede lorentsnv Nybegynder
10. februar 2005 - 14:03 #5
Med din tabel-struktur:

Select gruppenavn,
  CASE DatePart(month, Dato) WHEN 1 THEN Tekst ELSE '' END as Jan
  CASE DatePart(month, Dato) WHEN 2 THEN Tekst ELSE '' END as Feb
  CASE DatePart(month, Dato) WHEN 3 THEN Tekst ELSE '' END as Mar
From Kalender K left join KalenderGrupper G on K.gruppeid = K.gruppeid
Order by gruppenavn

Du må lige undersøge om du kan bruge CASE på denne måde i MySQL.
Avatar billede grafikeren Nybegynder
10. februar 2005 - 14:04 #6
ok... Koden skal faktisk også virke i access, da siden skal køre på access en uge indtil den nye ser med Mysql er klar...
Avatar billede grafikeren Nybegynder
10. februar 2005 - 14:08 #7
Jeg forstår desværre ikke særlig meget af SQL sætninger... Derfor dette spørgsmål. Jeg har bare tænkt at en standard SQL sætning "select x where dato = x" og så noget loop. Men det vil jo netop ikke fungere særlig effektivt...

:o(
Avatar billede grafikeren Nybegynder
10. februar 2005 - 14:11 #8
Hvordan får jeg fx udskrevet januar 2005 hvis dato formatet er dd-mm-yyyy?
Avatar billede lorentsnv Nybegynder
10. februar 2005 - 14:16 #9
Jeg var måske lidt hurtig her. Det er ikke sikker du vil kunne opnå så meget ved at krydstabulere dine data. Men hvis du får dine data sorteret først på gruppeid og derefter dato, kan du i din asp-kode checke på måned og gruppeid, hvornår du skal sette ind nyt <TD> og nyt <TR>.
Avatar billede grafikeren Nybegynder
10. februar 2005 - 14:20 #10
... Ja, men stadigvæk er tiden ikke med mig til at nå dette. Er der ikke nogen der har noget kode - der er 150 point på højkant... :o)
Avatar billede grafikeren Nybegynder
20. marts 2005 - 13:40 #11
Købte mig ud af problemet.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester