Avatar billede Slettet bruger
08. maj 2003 - 22:24 Der er 27 kommentarer og
1 løsning

Hvad går der galt i min update statement her?

Hejsa.
Jeg skal have kopieret noget indhold fra en tabel til en anden tabel og har lige fundet denne syntax på http://www.informit.com:
---------------------------------------------
You not only can identify records to update based on the contents of another table, you can copy column values from one table to another. The following statement copies t1.a to t2.a for records that have a matching id column value:

UPDATE t1, t2 SET t2.a = t1.a WHERE t2.id = t1.id;

---------------------------------------------

Jeg forsøger derfor at gøre dette men det virker ikke, hvad går der galt her:
---------------------------------------------
UPDATE hold, holdspec SET holdspec.specbeskrivelse = hold.beskrivelse
WHERE holdspec.holdid = hold.ID;
---------------------------------------------

Jeg gør nøjagtigt som de beskriver, sååå.... ??!?

Nogen der har et forslag?

På forhånd tak :)
Avatar billede erikjacobsen Ekspert
08. maj 2003 - 22:26 #1
Det understøttes vist ikke af MySql - siger de at gør på informit.com ?
Avatar billede fangel Nybegynder
08. maj 2003 - 22:30 #2
hmm... jeg synes ellers normalt at MySQL er ret god til ting over flere tabeller, men har dog aldrig set UPDATE på 2 tabeller, som erik kan somend have ret...

Morten
Avatar billede Slettet bruger
08. maj 2003 - 22:34 #3
De siger det rigtigt mange steder.

har også lige prøvet denne:
--------------------
UPDATE `holdspec`,`hold` SET `holdspec`.`specbeskrivelse` = `hold`.`beskrivelse`
WHERE `holdspec`.`holdid` = `hold`.`ID`;
--------------------

Uden held :(

jeg får denne fejlmeddelelse:
--------------------
You have an error in your SQL syntax near '`hold` SET `holdspec`.`specbeskrivelse` = `hold`.`beskrivelse` WHERE `holdspec`.' at line 1
--------------------

Jeg skal bare have kopieret alt fra hold.beskrivelse til holdspec.specbeskrivelse

Kan man virkelig ikke gøre det på en eller anden måde?
Avatar billede erikjacobsen Ekspert
08. maj 2003 - 22:39 #4
Men skriver de at det gælder for Mysql - jeg tror gerne der
er andre SQL-implementationer hvor man kan.
Avatar billede Slettet bruger
08. maj 2003 - 22:39 #5
Morten -> jeg forsøger jo også kun en update på en tabel, men skal jo have den anden med for at lave et sammenligningsgrundlag...... eller hvad ved jeg, det virker jo ikke :)
Avatar billede Slettet bruger
08. maj 2003 - 22:42 #6
Erik -> ja se selv: http://www.informit.com/isapi/product_id~%7B60B19985-0F7B-4E72-88ED-C472616E45D8%7D/element_id~%7B3B123D47-5DBE-4438-9EF7-3E4FA234FE5A%7D/st~%7B822202F4-E865-472D-B32F-BE77D3B7ACE1%7D/content/articlex.asp

Men det kan selvfølgelig være at det er en ældre mysql version der ligger på tiscali's webhotel III, og derfor er det ikke understøttet. Men for pokker da, man må da kunne opdatere en tabel med nogle værdier fra en anden?
Avatar billede mortrr Praktikant
08. maj 2003 - 22:43 #7
Den syntax kan da vist ikke bruges i mysql

Men du burde kunne bruge noget der ligner
UPDATE holdspec SET holdspec.specbeskrivelse=hold.beskrivelse FROM hold where holdspec.holdid=hold.id

Mener den går
Avatar billede mortrr Praktikant
08. maj 2003 - 22:46 #8
Nope - jeg huskede forkert.

Og det er først i 4.04 at man kan bruge den anden syntax til flere tabeller.
Avatar billede ahv Nybegynder
08. maj 2003 - 22:48 #9
Kevin >> En workaround kunne være at trække dataerne ud:

SELECT hold.beskrivelse, hold.ID, holdspec.specbeskrivelse, holdspec.holdid WHERE holdspec.holdid = hold.ID;

Også opdatere din tabel:

UPDATE holdspec SET specbeskrivelse = 'udtrækbeskrivelse' WHERE holdid = 'udtrækID';
Avatar billede Slettet bruger
08. maj 2003 - 22:49 #10
Mortrr-> nope den duer heller ikke :/
Avatar billede ahv Nybegynder
08. maj 2003 - 22:49 #11
SELECT hold.beskrivelse, hold.ID, holdspec.specbeskrivelse, holdspec.holdid FROM hold, holdspec WHERE holdspec.holdid = hold.ID;
Avatar billede Slettet bruger
08. maj 2003 - 22:51 #12
ahv-> hm...ja.....prøver at fyre den af i et sql kald....
Avatar billede Slettet bruger
08. maj 2003 - 22:56 #13
so close:
--------------------
UPDATE `holdspec` SET `holdspec`.`specbeskrivelse` = (
SELECT hold.beskrivelse
  FROM hold, holdspec
    WHERE holdspec.holdid = hold.ID
)
--------------------

der mangler lidt tror jeg....
Avatar billede mortrr Praktikant
08. maj 2003 - 22:57 #14
Nej - den virker ikke før i 4.1, hvor subselects er tilladt.
Avatar billede Slettet bruger
08. maj 2003 - 22:59 #15
Kan det virkelig være rigtigt at tiscali stadig kører med en så gammel version af mysql på et webhotel III til over 3000 kr om året? nogen der ved det?
Avatar billede mortrr Praktikant
08. maj 2003 - 23:01 #16
SELECT VERSION();
Avatar billede Slettet bruger
08. maj 2003 - 23:02 #17
VERSION()

3.23.49a

DET ER DA LØØØØGN! :/
Avatar billede ahv Nybegynder
08. maj 2003 - 23:11 #18
Kevin >> Så er du nok nød til at følge min workaround indtil de opgradere.
Avatar billede Slettet bruger
08. maj 2003 - 23:12 #19
Det ryger lige på en support mail til dem, så de kan se at få opdateret. Det er simpelthen for dårligt til den pris.

Er der andre der vil ha lidt point? :)
Avatar billede mortrr Praktikant
08. maj 2003 - 23:12 #20
Marts 2002.

Det kan jo være de har besluttet ikke at gå fra 3.x til 4.x

Men til den pris, så er det nu pinligt.
Og de har garanteret sikret sig at der ikke står noget i kontrakten om at de vil opgradere deres database-server.
Avatar billede Slettet bruger
08. maj 2003 - 23:13 #21
ahv-> mener du at jeg skal gøre det manuelt? der er 200 poster :(
Avatar billede Slettet bruger
08. maj 2003 - 23:15 #22
Mortrr -> ja det er pinligt syntes jeg, mener faktisk at det er 3500 kr/år eller i den stil.....
Avatar billede erikjacobsen Ekspert
08. maj 2003 - 23:18 #23
Jeg har ingen praktiske erfaringer på dette område med
versioner af MySql, men hvis man lever af at levere
stabilitet kan der være gode grunde til ikke bare at
opdatere. Der var fx. en del webhoteller der holdt igen
i rimelig lang tid, da PHP4 kom frem.
Avatar billede Slettet bruger
08. maj 2003 - 23:21 #24
det gør da ihvertfald livet væsentligt mere besværligt for deres kunder. Desuden har jeg da aldrig hørt at mysql releaser en ustabil version.
Avatar billede mortrr Praktikant
08. maj 2003 - 23:26 #25
Jo - der har være nogle uheldige nogen.
Men der har altså også været en hel del gode versioner det sidste års tid.
Avatar billede Slettet bruger
08. maj 2003 - 23:39 #26
det ville stadig være dejligt, nu sidder jeg og skal copy paste statements i notpad :/

well, der er nok ikke andet for, nogen der vil have en sjat point for jeres indsats, så post et svar, så ser jeg om jeg kan fordele det jævnligt...
Avatar billede mortrr Praktikant
09. maj 2003 - 00:29 #27
Var det så ikke nemmere at indsætte data i en temporær tabel, slette de oprindelige data og smide tilbage igen?
Avatar billede Slettet bruger
31. juli 2003 - 19:17 #28
Vi lukker
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