18. september 2003 - 09:46
Der er
11 kommentarer og 1 løsning
NOT IN() opfører sig underligt! Fatter bjælde!
Hej Eksperter Hvorfor vil følgende ikke virke: UPDATE tabel SET wievedby = CONCAT(wievedby, '," . foo() . "') WHERE id = " . $bar . " AND " . foo() . " NOT IN(wievedby)" Det er den sidste del (NOT IN()), der ikke virker! Har jeg eks: wievedby = 10,6 Indsætter den stadig ',6', hvilket NOT IN() skulle sørge for! Hvad er der galt?
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
18. september 2003 - 09:51
#1
der skal altså KUN opdateres, hvis foo() ikke er repræsenteret i listen "wievedby"...
18. september 2003 - 09:56
#2
NOT IN (10,6) bør ekskludere integers 10 og 6. NOT IN ('10','6') bør ekskludere strings '10' og '6' NOT IN (',10',',6') bør ekskludere strings ',10' og ',6'
18. september 2003 - 10:08
#3
Ja! Derfor forstår jeg det heller ikke. Når query'en bliver parset bliver det: UPDATE tabel SET wievedby = CONCAT(wievedby, ',6') WHERE id = 15 AND 6 NOT IN(wievedby) Men alligevel indsættes ,6 efter wievedby, selvom wievedby indeholder 10,5,6,3,4 for feltet med id = 15... Det forstår jeg ikke. Kan man virkelig ikke bruge et felt fra query'en i IN()???
18. september 2003 - 10:50
#4
Kigger ind når jeg kommer fra arbejde (ca. midnat)
18. september 2003 - 10:53
#5
Jeg forstår ikke helt. CONCAT(wievedby, ',6') antyder at viewedby er string 6 NOT IN(wievedby) antyder at viewedby er integer Der er noget galt !
18. september 2003 - 11:19
#6
Nej, jeg bliver jo nødt til at indsætte: eks, før: wievedby: 10,5 eks, eft: wievedby: 10,5,6 (indsat som ',6') wievedby er således en liste (10,5,6). Vel en slags streng?!?
18. september 2003 - 11:22
#7
Hvad datatype har viewedby ?
18. september 2003 - 11:24
#8
I parentes bemærket er hel konstruktionen meget "ikke-relationel". Et felt i en relationel database bør kun indeholde atomiske værdier. Normalt ville man løse dit problem med en seperat tabel: viewedby id viewer 7 10 7 5 7 6 og så indsætte en ny record i den tabel.
19. september 2003 - 00:54
#9
arne_v > wievedby er varchar(255). Du har fuldstændig ret med konstruktionen, men jeg synes bare det burde være så simpelt, at jeg lige måtte prøve det - og så virker det ikke...
19. september 2003 - 09:32
#10
arne_v > Jeg tror jeg bruger din løsning med en seperat tabel. Gider du smide et svar?
19. september 2003 - 09:34
#11
ok
19. september 2003 - 11:03
#12
Så kommer der bare lige 30 styks til dig ;)
Computerworld tilbyder specialiserede kurser i database-management