[ASP] [SQL] UPDATE INNER JOIN

Pagina: 1
Acties:

  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Topicstarter
Goede morgen allemaal,

Misschien is deze vraag dezelfde als eentje die al voorkomt in het forum, maar ik denk dat deze een betere situatie schets geeft.
Ik heb een Stored Procedure, nml:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Alter Procedure "SP_LoadListNodes"
    (@NodeId varchar(50),
    @LanguageId INT)
As
    SELECT TBL_Nodes.StrId AS StrId, TBL_NodesLanguages.Nodename AS Nodename, TBL_Nodes.Location AS Location, TBL_Nodes.HasImage AS HasImage,
    TBL_NodesLanguages.Description AS Description,   TBL_NodesLanguages.Input AS Input, TBL_NodesLanguages.Output AS Output,
    TBL_Nodes.OwnerTeamId AS OwnerTeamId, TBL_Nodes.IsReadOnly AS IsReadOnly, TBL_Nodes.FirstFilterFieldId AS FirstFilterFieldId
    FROM TBL_Nodes 
    INNER JOIN TBL_NodesLanguages 
    ON TBL_NodesLanguages.StrId = TBL_Nodes.StrId
    WHERE TBL_Nodes.StrId LIKE @NodeId 
    AND TBL_NodesLanguages.LanguageId = @LanguageId 
    ORDER BY TBL_Nodes.StrId ASC
    return

En die wil ik op de volgende manier updaten.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sConn   = fnGetFromSystemXML("ConnectionString")
set oConn = server.createobject("ADODB.Connection")
oConn.open sConn

        sSQL        = "SP_LoadListNodes '" & sNodeId & "', " & iLanguageId
        set oRsLoadListNodes = server.createobject("ADODB.recordset")
        oRsLoadListNodes.open sSQL, sConn, 1, 2
        oRsLoadListNodes("NodeName")            = sNodeName
        oRsLoadListNodes("HasImage")            = bHasImage
        oRsLoadListNodes("Description")         = sDescription
        oRsLoadListNodes("Input")               = sInput
        oRsLoadListNodes("Output")              = sOutput
        oRsLoadListNodes("OwnerTeamId")         = sOwnerTeamId
        oRsLoadListNodes("IsReadOnly")          = bIsReadOnly
        oRsLoadListNodes.update
        oRsLoadListNodes.close
        set oRsLoadListNodes = nothing

Alleen geeft ie met deze afhandeling errors op:
HasImage
Location (wordt niet ge-update, maar komt wel terug met de SP)
OwnerTeamId
IsReadOnly

Iemand enig idee hoe dit kan komen?
Ik denk zelf dat het aan de INNER JOIN ligt, maar ik vind ook dat je een INNER JOIN gewoon moet kunnen updaten. :)

Sorry dat de layout een beetje boel wordt verneukt. :'(

De groeten, en alvast bedankt.

| Life is a game (and games are fun) | homepage |


Verwijderd

Dat kan niet.
Je mag alleen platte selects updaten.

Zowieso een beetje evil op deze manier updaten, zeker met veel gebruikers, gebruik UPDATE tabel.. enz. of maak een mooie update-SP als je meer dan 1 tabel wil updaten. Heb je ook meteen transacties.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op maandag 26 november 2001 15:03 schreef Kerrick het volgende:
Dat kan niet.
Je mag alleen platte selects updaten.
Er zijn toch best databases die updatable cursors kennen? Dan zou zoiets wel moeten kunnen?

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:04

Creepy

Tactical Espionage Splatterer

Op maandag 26 november 2001 15:09 schreef Onno het volgende:

[..]

Er zijn toch best databases die updatable cursors kennen? Dan zou zoiets wel moeten kunnen?
Hmm.. wat nu als je al die velden uit je select update, maar in bijv. 1 tabel staan ook nog velden die NIET in je select zaten, die geen default value hebben en NOT NULL zijn... dan hebbie dus een probleem..

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • akakiwi
  • Registratie: September 2000
  • Laatst online: 20-03 11:13

akakiwi

I believe in the ruling class.

Topicstarter
Niet echt eigenlijk, want het is een UPDATE, en geen INSERT, dus gaat het gewoon goed.
Dit statement is bedoeld om bestaande data aan te passen.

Overingens heb ik het probleem al opgelost.
Gewoon met platte statement, en dan maar beide tabellen apart updaten.
Minder mooi vind ik, maar ja, de enige manier om het te doen.

Toch bedankt allemaal.

| Life is a game (and games are fun) | homepage |