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
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
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