Avatar billede jacob_top Nybegynder
01. oktober 2007 - 15:54 Der er 12 kommentarer

mssql statement til mysql

Jeg har et statement der virker i mssql, som jeg skal have "oversat" til mysql.

UPDATE Numplan Set alertingname = DeviceNumPlanMap.Display FROM NumPlan inner join DeviceNumPlanMap on DeviceNumPlanMap.fkNumPlan = NumPlan.pkid inner join Device on DeviceNumPlanMap.fkDevice = Device.pkid WHERE NumPlan.dNorPattern='2103'
Avatar billede michael_stim Ekspert
01. oktober 2007 - 16:00 #1
UPDATE Numplan Set alertingname = DeviceNumPlanMap.Display FROM NumPlan inner join DeviceNumPlanMap on DeviceNumPlanMap.fkNumPlan = NumPlan.pkid inner join Device on DeviceNumPlanMap.fkDevice = Device.pkid WHERE NumPlan.dNorPattern='2103'
Avatar billede jacob_top Nybegynder
01. oktober 2007 - 16:04 #2
øhhhhh - det er jo præcis samme statement?
Avatar billede dkfire Nybegynder
01. oktober 2007 - 22:33 #3
Nok fordi sql er næste det samme i msSQL og mySQL.
Avatar billede jacob_top Nybegynder
02. oktober 2007 - 08:03 #4
Ja næsten, men stadigvæk så virker ovenstående statement ikke, når man kører det fra kommandoprompten i en Cisco Callmanager 6.0 (som kører mysql) - Dog gør det præcis som det skal i mssql. Det er jo ikke fordi jeg ikke har prøvet... Ellers ville jeg jo nok have fundet ud af, at der kunne bruges præcis samme statement. Der må være et eller andet der skal skrives anderledes.
Avatar billede dkfire Nybegynder
02. oktober 2007 - 11:28 #5
Hvilken version af mysql kører du med ???
Avatar billede dkfire Nybegynder
02. oktober 2007 - 12:26 #6
Hvad får du af fejlmeddelser fra mysql ??
Avatar billede jacob_top Nybegynder
02. oktober 2007 - 12:48 #7
Problemet er, at Callmanageren ikke giver nogen anden fejlmeddelelse end, at der er en fejl. Så desværre ikke nogen specificeret fejlmeddelelse. Hvad der angår versionen af Mysql, så kan jeg desværre ikke finde den oplysning nogen steder, men hvis man tager efter hvornår Cisco Callmanager 6.0 er udgivet (August 2007), så må det være en ret ny version.
Avatar billede pidgeot Nybegynder
02. oktober 2007 - 12:56 #8
Du kan ikke bruge FROM i en UPDATE, og det overrasker mig lidt hvis MSSQL rent faktisk slugte den der. Hvis tanken er at hente en værdi fra en anden tabel, skal du lave en subselect (... SET alertingname = (SELECT DeviceNumPlanMap...) .

http://dev.mysql.com/doc/refman/5.0/en/update.html
Avatar billede jacob_top Nybegynder
03. oktober 2007 - 14:40 #9
Jeg har ikke fået det til at virke endnu, men jeg har lige et spørgsmål mere for, at pejle mig ind på hvor det går galt. Jeg har lavet et eksempel neden under:

select * from dbcli.v3

Result:

pkid                                alertingname display
==================================== ============ =======
07e29287-d036-b451-15fb-c93d595e39e6 Test1        Conscia

Jeg laver derefter nedenstående query, hvor jeg vil have alertingname i Numplan til at være lig med display i dbcli.v3 , hvor pkid er er det samme i begge tabeller

UPDATE NumPlan,dbcli.v3 SET NumPlan.alertingname = dbcli.v3.display WHERE NumPlan.pkid = dbcli.v3.pkid

Det virker ikke... Er der nogen der kan guide mig hen imod hvad fejlen evt kan være?
Avatar billede jacob_top Nybegynder
03. oktober 2007 - 14:57 #10
sorry - den viste det ikke lige så godt i resultatet. Alertingname er Test 1, og display er Conscia.
Avatar billede dkfire Nybegynder
03. oktober 2007 - 14:58 #11
Jeg går ikke udfra at du har punktum i din tabel navn ?

Ellers prøv med:
UPDATE NumPlan,'dbcli.v3' SET NumPlan.alertingname = 'dbcli.v3'.display WHERE NumPlan.pkid = 'dbcli.v3'.pkid

Men jeg tror stadig ikke der er en god ide at have en tabelnavn med punktum.
Avatar billede dkfire Nybegynder
03. oktober 2007 - 15:02 #12
Ellers måske

UPDATE NumPlan SET NumPlan.alertingname = ( SELECT display FROM 'dbcli.v3' WHERE  'dbcli.v3'.pkid = NumPlan.pkid )
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