varför fungerar itne detta. det fungerade med access.
VarDammit = "UPDATE users SET relationer = relationer & '" & tal & ";' WHERE ID = 256"
Connect.Execute VarDammit,,128
11 svar · 269 visningar · startad av nill
varför fungerar itne detta. det fungerade med access.
VarDammit = "UPDATE users SET relationer = relationer & '" & tal & ";' WHERE ID = 256"
Connect.Execute VarDammit,,128
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
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.
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
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.
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.
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.
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.
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.
update t
set c = CONCAT('My', coalesce(c,''), 'QL')
where id = 4711
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å?
men arr..
kan någon svara på vilket som är bäst.. 250 000 poster eller 50 separata databashämtningar varje på sida?