RE: [sqlite] Syntax help with UPDATE in SQLite Database Browser
Thanks Miguel, I fear you're right. For this infrequent update process it just may just be easier to throw the data into another db format. Thanks again Rob -Original Message- From: miguel manese [mailto:[EMAIL PROTECTED] Sent: Friday, 8 June 2007 3:31 PM To: sqlite-users@sqlite.org Subject: Re: [sqlite] Syntax help with UPDATE in SQLite Database Browser Maybe you really have to loop "outside" sqlite to align the rows & values. From the result you got and the UPDATE documentation, I can guess that the subselect in the assignment is flattened to a scalar. Unfortunately sqlite does not have something like update tbl1 set col=tbl2.col from tbl2 where tbl2.id=tbl1.id which would have been what you needed. Cheers, M. Manese On 6/8/07, Ellis Robin (Bundaberg) <[EMAIL PROTECTED]> wrote: > Thanks John, that's what I thought too... My positioning on a row is > dependent on 2 values, and without any better knowledge of SQLite I've > tried implementing this: > > Update > Parameter > set > ParameterValue = (select NewParams.parametervalue from Scenario, Link, > Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, > Parameter, NewParams where Scenario.ScenarioID = 1004 and > Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID > and FunctionalUnit.CatchmentID = Catchment.CatchmentID and > FunctionalUnit.FunctionalUnitDefinitionID = > FunctionalUnitDefinition.FunctionalUnitDefinitionID and > FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and > StandardFU.RainfallRunoffModelID = Parameter.ModelID and > Catchment.Name = NewParams.Subcatchments and > FunctionalUnitDefinition.Name = NewParams.FU_name and > Parameter.Parameter = NewParams.parameter) > > Where > Parameter.ModelID = (select Parameter.ModelID from Scenario, Link, > Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, > Parameter, NewParams where Scenario.ScenarioID = 1004 and > Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID > and FunctionalUnit.CatchmentID = Catchment.CatchmentID and > FunctionalUnit.FunctionalUnitDefinitionID = > FunctionalUnitDefinition.FunctionalUnitDefinitionID and > FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and > StandardFU.RainfallRunoffModelID = Parameter.ModelID and > Catchment.Name = NewParams.Subcatchments and > FunctionalUnitDefinition.Name = NewParams.FU_name and > Parameter.Parameter = NewParams.parameter) > > and > Parameter.Parameter = (select Parameter.Parameter from Scenario, Link, > Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, > Parameter, NewParams where Scenario.ScenarioID = 1004 and > Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID > and FunctionalUnit.CatchmentID = Catchment.CatchmentID and > FunctionalUnit.FunctionalUnitDefinitionID = > FunctionalUnitDefinition.FunctionalUnitDefinitionID and > FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and > StandardFU.RainfallRunoffModelID = Parameter.ModelID and > Catchment.Name = NewParams.Subcatchments and > FunctionalUnitDefinition.Name = NewParams.FU_name and > Parameter.Parameter = NewParams.parameter) > > However my results are the same with this attempt at row positioning. > Both of the select statements used in the WHERE expression do retturn > valid records. Any more hints? > > Rob > - To unsubscribe, send email to [EMAIL PROTECTED] - The information in this email together with any attachments is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any form of review, disclosure, modification, distribution and/or publication of this email message is prohibited, unless as a necessary part of Departmental business. If you have received this message in error, you are asked to inform the sender as quickly as possible and delete this message and any copies of this message from your computer and/or your computer system network. - To unsubscribe, send email to [EMAIL PROTECTED] -
Re: [sqlite] Syntax help with UPDATE in SQLite Database Browser
Maybe you really have to loop "outside" sqlite to align the rows & values. From the result you got and the UPDATE documentation, I can guess that the subselect in the assignment is flattened to a scalar. Unfortunately sqlite does not have something like update tbl1 set col=tbl2.col from tbl2 where tbl2.id=tbl1.id which would have been what you needed. Cheers, M. Manese On 6/8/07, Ellis Robin (Bundaberg) <[EMAIL PROTECTED]> wrote: Thanks John, that's what I thought too... My positioning on a row is dependent on 2 values, and without any better knowledge of SQLite I've tried implementing this: Update Parameter set ParameterValue = (select NewParams.parametervalue from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) Where Parameter.ModelID = (select Parameter.ModelID from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) and Parameter.Parameter = (select Parameter.Parameter from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) However my results are the same with this attempt at row positioning. Both of the select statements used in the WHERE expression do retturn valid records. Any more hints? Rob - To unsubscribe, send email to [EMAIL PROTECTED] -
RE: [sqlite] Syntax help with UPDATE in SQLite Database Browser
Thanks John, that's what I thought too... My positioning on a row is dependent on 2 values, and without any better knowledge of SQLite I've tried implementing this: Update Parameter set ParameterValue = (select NewParams.parametervalue from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) Where Parameter.ModelID = (select Parameter.ModelID from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) and Parameter.Parameter = (select Parameter.Parameter from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) However my results are the same with this attempt at row positioning. Both of the select statements used in the WHERE expression do retturn valid records. Any more hints? Rob -Original Message- From: John Stanton [mailto:[EMAIL PROTECTED] Sent: Friday, 8 June 2007 2:48 PM To: sqlite-users@sqlite.org Subject: Re: [sqlite] Syntax help with UPDATE in SQLite Database Browser You don't seem to be positioning on a row in the Parameter table with a WHERE clause. Ellis Robin (Bundaberg) wrote: > Could I please get some help on the syntax required to perform my > UPDATE based on a selection from multiple tables? I've been through > the archives but can't seem to make much sense of the examples given. > > I have a table containing 'new' paramater values, I need to update the > relevant records in the 'existing' parameter table, however my > selection is based on a handful of tables. Here's the selection I run > to view my old and new parameters side by side, this works fine: > > select Scenario.ScenarioID, Scenario.NetworkID, Link.LinkID, > Catchment.CatchmentID,Catchment.Name, FunctionalUnit.FunctionalUnitID, > FunctionalUnitDefinition.Name, StandardFU.RainfallRunoffModelID, > Parameter.Parameter, Parameter.ParameterValue, > NewParams.parametervalue from Scenario, Link, Catchment, > FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, > NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = > Link.NetworkID and Link.LinkID = Catchment.LinkID and > FunctionalUnit.CatchmentID = Catchment.CatchmentID and > FunctionalUnit.FunctionalUnitDefinitionID = > FunctionalUnitDefinition.FunctionalUnitDefinitionID and > FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and > StandardFU.RainfallRunoffModelID = Parameter.ModelID and > Catchment.Name = NewParams.Subcatchments and > FunctionalUnitDefinition.Name = NewParams.FU_name and > Parameter.Parameter = NewParams.parameter > > However when I use this selection to update the relevent field in the > parameters table I don't get a 'correct' update, instead I get the > first value encountered in the NewParams table over writing ALL of the > old parameter values. Here's my syntax: > > Update Parameter set ParameterValue = (select NewParams.parametervalue > from Scenario, Link, Catchment, FunctionalUnit, > FunctionalUnitDefinition, StandardFU, Parameter, NewParams where > Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and > Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = > Catchment.CatchmentID and FunctionalUnit.FunctionalU
Re: [sqlite] Syntax help with UPDATE in SQLite Database Browser
You don't seem to be positioning on a row in the Parameter table with a WHERE clause. Ellis Robin (Bundaberg) wrote: Could I please get some help on the syntax required to perform my UPDATE based on a selection from multiple tables? I've been through the archives but can't seem to make much sense of the examples given. I have a table containing 'new' paramater values, I need to update the relevant records in the 'existing' parameter table, however my selection is based on a handful of tables. Here's the selection I run to view my old and new parameters side by side, this works fine: select Scenario.ScenarioID, Scenario.NetworkID, Link.LinkID, Catchment.CatchmentID,Catchment.Name, FunctionalUnit.FunctionalUnitID, FunctionalUnitDefinition.Name, StandardFU.RainfallRunoffModelID, Parameter.Parameter, Parameter.ParameterValue, NewParams.parametervalue from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter However when I use this selection to update the relevent field in the parameters table I don't get a 'correct' update, instead I get the first value encountered in the NewParams table over writing ALL of the old parameter values. Here's my syntax: Update Parameter set ParameterValue = (select NewParams.parametervalue from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) Can anyone shed some light on this for me? I've tried adding more WHERE statements after the nested selection, but with no better results. Thanks Rob Robin Ellis Natural Resources & Water PO Box 1167 Bundaberg QLD 4670 Ph: +617 4131 5771 Fax: +617 4131 5823 The information in this email together with any attachments is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any form of review, disclosure, modification, distribution and/or publication of this email message is prohibited, unless as a necessary part of Departmental business. If you have received this message in error, you are asked to inform the sender as quickly as possible and delete this message and any copies of this message from your computer and/or your computer system network. - To unsubscribe, send email to [EMAIL PROTECTED] -
[sqlite] Syntax help with UPDATE in SQLite Database Browser
Could I please get some help on the syntax required to perform my UPDATE based on a selection from multiple tables? I've been through the archives but can't seem to make much sense of the examples given. I have a table containing 'new' paramater values, I need to update the relevant records in the 'existing' parameter table, however my selection is based on a handful of tables. Here's the selection I run to view my old and new parameters side by side, this works fine: select Scenario.ScenarioID, Scenario.NetworkID, Link.LinkID, Catchment.CatchmentID,Catchment.Name, FunctionalUnit.FunctionalUnitID, FunctionalUnitDefinition.Name, StandardFU.RainfallRunoffModelID, Parameter.Parameter, Parameter.ParameterValue, NewParams.parametervalue from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter However when I use this selection to update the relevent field in the parameters table I don't get a 'correct' update, instead I get the first value encountered in the NewParams table over writing ALL of the old parameter values. Here's my syntax: Update Parameter set ParameterValue = (select NewParams.parametervalue from Scenario, Link, Catchment, FunctionalUnit, FunctionalUnitDefinition, StandardFU, Parameter, NewParams where Scenario.ScenarioID = 1004 and Scenario.NetworkID = Link.NetworkID and Link.LinkID = Catchment.LinkID and FunctionalUnit.CatchmentID = Catchment.CatchmentID and FunctionalUnit.FunctionalUnitDefinitionID = FunctionalUnitDefinition.FunctionalUnitDefinitionID and FunctionalUnit.FunctionalUnitID = StandardFU.StandardFUID and StandardFU.RainfallRunoffModelID = Parameter.ModelID and Catchment.Name = NewParams.Subcatchments and FunctionalUnitDefinition.Name = NewParams.FU_name and Parameter.Parameter = NewParams.parameter) Can anyone shed some light on this for me? I've tried adding more WHERE statements after the nested selection, but with no better results. Thanks Rob Robin Ellis Natural Resources & Water PO Box 1167 Bundaberg QLD 4670 Ph: +617 4131 5771 Fax: +617 4131 5823 The information in this email together with any attachments is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any form of review, disclosure, modification, distribution and/or publication of this email message is prohibited, unless as a necessary part of Departmental business. If you have received this message in error, you are asked to inform the sender as quickly as possible and delete this message and any copies of this message from your computer and/or your computer system network.