Avatar billede sesam Nybegynder
28. december 2003 - 10:47 Der er 23 kommentarer og
1 løsning

Select og update

Jeg har et problem med en opdatering af min MySQL db.
Jeg har en tabel der indeholder konsultationer, fra hvilken uge de skal starte og til hvilken uge de skal slutte og hvilket årstal.
I en anden tabel, der hedder aftaler, oprettes alle de konsultationer der skal ske pr. dag og uge. Mit problem er som følger.
Jeg har et felt i begge mine tabeller der hedder aktiv som kan indeholde værdien 0 eller 1. 
I tabellen konsultationer er der angivet årstal, men ikke i aftaler da konsultations_id er fremmednøgle i denne tabel. Problemet er når jeg opdatere begge tabeller opdateres dem for næste år også pga. at i tabel aftaler ikke er feltet med årstal, som jo er i tabellen konsultationer.

Dette virker i hvert fald ikke:

UPDATE aftaler set active = '0' where week <= '52' and konsultationer.year = '2003'

Hvis det var til at forstå ,0)) hvad skal jeg så gøre?
Avatar billede phpwiz Nybegynder
28. december 2003 - 10:52 #1
update aftaler set aftaler.active = '0' where aftaler.week <= '52' and konsultationer.year = '2003' and aftaler.id = konsultationer.IDTILAFTALER ..

noget lign det ?
Avatar billede erikjacobsen Ekspert
28. december 2003 - 10:52 #2
Fra mysql 4.0.4 kan du (ustestet)

UPDATE aftaler,konsultationer SET aftaler.active='0' WHERE aftaler week<='52 AND
konsultationer.year='2003' AND afytaler.id=konsultationer.konsultations_id
Avatar billede sesam Nybegynder
28. december 2003 - 10:54 #3
Det er kun tabellen aftaler der skal opdateres?
Avatar billede phpwiz Nybegynder
28. december 2003 - 10:54 #4
æv , manglede lige update aftaler, konsultationer i min query
Avatar billede erikjacobsen Ekspert
28. december 2003 - 10:55 #5
det er også kun den der bliver opdateret. Check din mysql version inden du går i gang ;)
Avatar billede sesam Nybegynder
28. december 2003 - 10:56 #6
Ja, sorry det er rigtigt, det virker faktisk... Takker for hjælpen...
Avatar billede sesam Nybegynder
28. december 2003 - 11:07 #7
Det viser sig selvfølgelig at min host kører med MySQL 3.23.58 er der så en anden mulighed?
Avatar billede erikjacobsen Ekspert
28. december 2003 - 11:15 #8
du kunne
1) Lave om i din tabelstruktur
2) Lave en select med ids i en tabel, og bruge indholdet til een eller flere updates
Avatar billede sesam Nybegynder
28. december 2003 - 11:17 #9
Er min tabel struktur forkert da?
Avatar billede erikjacobsen Ekspert
28. december 2003 - 11:19 #10
Det er da lidt underligt at du har en "halv" tidsangivelse i den ene tabel - altså en
uge uden specificeret år. Men jeg kan ikke sige den er "forkert" eller en anden er
"rigtig(ere)" uden at vide mere om dit problemområde.
Avatar billede sesam Nybegynder
28. december 2003 - 11:21 #11
Det vil sige at jeg både skal ha' felet year i begge tabeller, så jeg er jeg i hvert fald ude over problemet, det er nok bare mig der ikke helt fatter relations db teorin...
Avatar billede erikjacobsen Ekspert
28. december 2003 - 11:24 #12
Det er bestemt en løsning, der vil virke her og nu. Så virker det som om du har
den samme oplysning to steder (redundans), men jeg kan ikke ud fra det du skriver
se forskellen på en konsultation og en aftale ;)
Avatar billede sesam Nybegynder
28. december 2003 - 11:30 #13
I tabellen konsultation opretter jeg fx. en post der indeholder:
Dag: Mandag, Fra uge: 50, til uge: 53, År: 2003, Aktiv: Ja

I tabellen Aftaler oprettes så:
uge 50: ..... , aktiv: ja
uge 51: .................
uge 52: .................
uge 53; .................

Aftaler har så konsultations_id som fremmed nøgle og da denne tabel indeholder årstal burde det ikke være nødvendigt at ha' det i begge tabeller...

Er det til at forstå nu .0)?
Avatar billede erikjacobsen Ekspert
28. december 2003 - 11:34 #14
Ja, så har du da i hvert fald de samme data flere steder ;)  Men du kan så ikke oprette
en konsultation fra uge 50 2003 til uge 5 2004 ? Hvad med om du lavede det sådan

Konsultation
id, navn, adresse, bla, bla, bla

Aftaler
id, konsultations_id, uge, dag, år, dato, etc etc
Avatar billede sesam Nybegynder
28. december 2003 - 11:36 #15
Hvad skulle det ændre tror ikke helt jeg kan se forskellen ,)
Avatar billede erikjacobsen Ekspert
28. december 2003 - 11:38 #16
På denne måde er det delt op i de 2 ting, som det er: een konsultation har en til flere aftaler.
Og de relevante oplysninger står de relevante steder.
Avatar billede sesam Nybegynder
28. december 2003 - 11:47 #17
Jamen sådan er det da os' nu.
Avatar billede erikjacobsen Ekspert
28. december 2003 - 11:51 #18
Så behold du det bare som det er.
Avatar billede sesam Nybegynder
28. december 2003 - 11:53 #19
Nej jeg vil gerne ha' det til at køre rigtigt jeg tror bare ikke jeg helt forstår hvad du mener. Hvordan ville du fx. komme ud over det problem at man ikke kan oprette konsultationer fx. fra uge 50 2003 til uge 5 2004 ?
Avatar billede erikjacobsen Ekspert
28. december 2003 - 12:09 #20
Sådan som jeg skriver. Du har to ting i dit system:

En konsultation:
  en patient henvender sig hos en akupunktør - rent gæt - og skal
  behandles for nedgroede negle. Akupunktøren siger at det tager 6
  gange med en uges mellemrum. Patienten kan bedst mandage, så
  i en GUI taster akupunktøren navn adresse, etc ind, og
  at det skal være fra uge 8 2004 og 6 uger frem. Systemet foreslår
  så de 6 datoer, men der er desværre en 2. påskedag, som er optaget.
  Ok, siger patienten, så tager vi tirsdagen i stedet for.

Aftaler:
  Når datoerne nu ligger fast sættes de ind i din aftale tabel, med
  fremmednøgle tilbage til konsultationen, og patienten får en udskrift
  af datoer og tidspunkter (som heller ikke nødvendigvis ligger fast)
  med hjem.

Det giver akupunktøren mulighed som udgangspunkt at tænke i "samme dag
og tidspunkt i et antal uger fra nu" (jeg gætter igen på, at det er hvad
han måske har bedt om), med den nødvendige fleksibilitet at opbevare
aftalerne separat.

Men jeg gætter bare - jeg kender ikke din kundes konkrete behov. Det jeg forsøger at
sige her, er at du skal opbevare data så det er hensigtsmæssigt for dig som
programmør, og give kunden en GUI, der er hensigtsmæssig for ham.
  skal der laves
Avatar billede erikjacobsen Ekspert
28. december 2003 - 12:10 #21
Glem sidste linie i ovenstående - det var en fejl ;)
Avatar billede sesam Nybegynder
28. december 2003 - 12:16 #22
Ja ok, det har du fuldstændig ret i. Det ovenstående passer ikke helt ind i mit senario men hvor skulle du os' vide fra hvad mit handler om. Det er i hvert fald prisværdigt at du gider at komme med så uddybende en forklaring.
Og den har da os' givet mig inspiration til at ændre mit system radikalt.
Takker for hjælpen.
Avatar billede erikjacobsen Ekspert
28. december 2003 - 12:33 #23
altid en fornøjelse at hjælpe.... (mon akupunktur virker mod nedgroede negle *g*?)
Avatar billede sesam Nybegynder
28. december 2003 - 14:06 #24
Tror jeg ikke LOL ,o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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