Avatar billede shoofixmafi Nybegynder
26. juni 2005 - 18:14 Der er 13 kommentarer og
1 løsning

at skifter cell indhold i tabel

Hi
Jeg har et database (sell)
med et tabel som hedder (ad)
med et felt som er (expire_days) Type (int 11)

Jeg vil gerne skifter alle indhold
fra 365 til 730

Hvordan kan jeg gøre det med et formula in SQL query.

Tak
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:23 #1
Jeg mener at man kan bruge:
"update ad set expire_days = 730 where (select * from sell where expire_days = 365)"

/theSurfer
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:23 #2
Rettelse (kom til at skrive "sell"):

"update ad set expire_days = 730 where (select * from ad where expire_days = 365)"

/theSurfer
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:24 #3
Hvis det ikke virker, kan man prøve med "IN"..

Hvis man ikke kan gøre det direkte i SQL-sætningen, skal man hente alle records ud, og lave en loop, der automatisk opdaterer posterne..

/theSurfer
Avatar billede shoofixmafi Nybegynder
26. juni 2005 - 18:27 #4
SQL-query:

UPDATE ad SET expire_days =730 WHERE (

SELECT *
FROM ad
WHERE expire_days =365
)
MySQL said: 

#1064 - You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from ad where expire_days = 365)' at line 1
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:32 #5
Ahh..

Prøv: "update ad set expire_days = 730 where ad = (select * from ad where expire_days = 365)"

/theSurfer
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:33 #6
hmm.. mon ikke at man bare kan bruge:

"update ad set expire_days = 730 where ad = 365"

Men det ville være for nemt.. :-)

/theSurfer
Avatar billede shoofixmafi Nybegynder
26. juni 2005 - 18:33 #7
skulle jeg gøre det manuelt ?
Jeg har 700  felter !!
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:33 #8
rettelser:

"update ad set expire_days = 730 where expire_days = (select * from ad where expire_days = 365)"

"update ad set expire_days = 730 where expire_days = 365"

/theSurfer
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:36 #9
Nej, du skal ikke gøre det manuelt..

Hvis jeg husker korrekt, kan man gøre det med 1 sql sætning, med "where (select...)".. hvis det ikke virker, kan man vist gøre det med "IN"..

Hvis det heller ikke virker, kan man trække alle posterne ud, med "where expire_days = 365" og derefter lave en loop, der automatisk opdatere felterne til 730..

prøv lige mine forslag fra 26/06-2005 18:33:58

/theSurfer
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:39 #10
Eksempel fra http://www.wangz.net/updatestmt.htm (ikke helt det samme):

REM SET VALUE Example

UPDATE table1 p SET VALUE(p) =
  (SELECT VALUE(q) FROM table2 q WHERE p.id = q.id)
  WHERE p.id = 10;

Finder lige et bedre eksempel..

/theSurfer
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:40 #11
Et ligende problem findes her: http://www.experts-exchange.com/Databases/Q_21326302.html

/theSurfer
Avatar billede shoofixmafi Nybegynder
26. juni 2005 - 18:42 #12
den er OK nu
mange tak

Jag har brugt:
update ad set expire_days = 730 where expire_days = 365

Giv mid lige et svar min ven
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:45 #13
Svar givet :-)

/theSurfer
Avatar billede thesurfer Nybegynder
26. juni 2005 - 18:50 #14
Takker for points :-)

/theSurfer
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
Computerworld tilbyder specialiserede kurser i database-management

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