webForumDet fria alternativet

gammalt värde plus sträng?

11 svar · 269 visningar · startad av nill

nillMedlem sedan okt. 2001387 inlägg
#1

varför fungerar itne detta. det fungerade med access.

VarDammit = "UPDATE users SET relationer = relationer & '" & tal & ";' WHERE ID = 256"
Connect.Execute VarDammit,,128
ampyMedlem sedan feb. 20011 498 inlägg
#2

Jag misstänker att tal är en variabel, isf ska det vara så här:

VarDammit = "UPDATE users SET relationer = relationer & '"&tal&"' & ';' WHERE ID = 256"
Connect.Execute VarDammit,,128
LarsGMedlem sedan dec. 200012 464 inlägg
#3
VarDammit = "UPDATE users SET relationer = concat(relationer,'" &  tal & "',';') WHERE ID = 256"
Connect.Execute VarDammit,,128

Håller du och på och gör något som att spara flera värden i en kolumn så bör du designa om tycker jag.

nillMedlem sedan okt. 2001387 inlägg
#4

hur menar du då Lars G? designa om. för det är flera världen i en kolumnt jag håller på med.

ska man alltid har '" & variabel & "' istället för " & variabel & " ??? för det senare har jag för mig att man skulle använda med access om variabeln var ett tal

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Jo, det normala om man vill modellera en m-n relation är att skapa 3 tabeller. T.ex

personer:

namn! Andra kolumner
-------------------
LarsG! Andra värden

SkivInnehav:

Namn! Skiva
----------------
LarsG! 1
LarsG! 2
LarsG! 3

Skivor ! Titel
------------
1 ! Adolf fredriks Gosskör feat Lennart Swahn sjunger julsånger
2 ! Beast of the beasts
12 ! Best of Arne Weise

Om man nodellerar det som du har gjort så skulle det bli

person:

Namn! Skivor
--------!-------
LarsG ! 1;2;12

Om jag nu gör mig av med skiva 2 så blir det en rätt så krånglig sql-sats för att uppdatera den strängen som ligger i kolumnen skivor.
Den blir också ineffektiv eftersom det inte går att använda index. Det blir likadant för alla sökningar.

Däremot om man lagrar varje sak separat så blir det en väldigt enkel delete för att ta bort enskilda element.

LarsGMedlem sedan dec. 200012 464 inlägg
#6

ska man alltid har '" & variabel & "' istället för " & variabel & " ??? för det senare har jag för mig att man skulle använda med access om variabeln var ett tal

Om det är ' eller inte beror på i vilket sammanhang det används, inte på innehållet i variabeln. Funktionen concat tar strängar som argument.

Nu är både access och Mysql väldigt slarviga när det gäller typkontroll så

concat('x',1,';')

fungerar. Jag tycker i alla fall att man skall undvika implicita typningar.

nillMedlem sedan okt. 2001387 inlägg
#7

tror inte att flera tabeller är en lösning för mitt problem. Hade det så innan och och det blev över 7000 poster med bara en fjärdedel av användarna jag har nu.

LarsGMedlem sedan dec. 200012 464 inlägg
#8

tror inte att flera tabeller är en lösning för mitt problem.

Det tror jag. 7000(*4) poster är inget problem för ett DBHS.

nillMedlem sedan okt. 2001387 inlägg
#9

ett problem med CONCAT
(från mysql-dokumentationen)
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'

om värdet i fältet är NULL fungerar itne Concaten... hur fixar jag det? värdet är ju det första gången ett värde ska sättas in.

LarsGMedlem sedan dec. 200012 464 inlägg
#10
update t 
      set c = CONCAT('My', coalesce(c,''), 'QL') 
 where id = 4711
nillMedlem sedan okt. 2001387 inlägg
#11

ok.. NU har jag kört lite mer mitt "343;44;2224;"-sätt ett bra tag. Men min sida har växt enormt och är inte säker på att det är den mest optimal lösningen längre. för varje "343;" måste jag hämta en post med det id-numret och i det flesta fall blir det 50 såna olika posthämtningar för varje gång varje besökare besöker en sida. Jag kan tänka mig att det tar rätt mycket på servern.

Så, skulle LarsG's sätt med en andra tabell vara bättre då?

nillMedlem sedan okt. 2001387 inlägg
#12

men arr..
kan någon svara på vilket som är bäst.. 250 000 poster eller 50 separata databashämtningar varje på sida?

126 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)