Icon View Incident Report

Serious Serious
Reported By: Richard Harding
Reported On: 3/22/2007
For: Version 1.01 Build 1
# 2278 Correlated EXIST Sub-Queries Not Working Properly

I am converting the following DBISAM UPDATE statement to ELEVATEDB. I am updating the SequenceNo in TestResults table with associated SequenceNo in Test table, if the SequenceNos are different.

The ELEVATEDB UPDATE statement below updates EVERY row in the table if ANY TEST has a different SequenceNo in the TestResult & Test tables. I believe that the statement below should only update the SequenceNo if the SequenceNo in TestResults is different from the SequenceNo for the same Test in the Test table.

DBISAM UPDATE:

UPDATE 
  TestResult
SET 
  SequenceNo = Test.SequenceNo
FROM
  TestResult INNER JOIN Test
     ON TestResult.TestID = Test.ID
WHERE
  TestResult.SequenceNo <> Test.SequenceNo;

ElevateDB UPDATE:

UPDATE
  TestResults
SET
  SequenceNo = (SELECT SequenceNo FROM Test
                             WHERE TestResults.TestID = Test.ID)
WHERE EXISTS
  (SELECT * FROM Test
     WHERE
        TestResults.TestID = Test.ID AND
        TestResults.SequenceNo <> Test.SequenceNo);

Tables:

CREATE TABLE "Test"
(
"ID" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 146, INCREMENT BY 1) NOT NULL,
"Name" VARCHAR(24) COLLATE "ANSI_CI" NOT NULL,
"SequenceNo" INTEGER NOT NULL,
"Abbreviation" VARCHAR(12) COLLATE "ANSI" NOT NULL,
. . . . .
)
  
CREATE TABLE "TestResult"
(
"ID" INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1353957, INCREMENT BY 1) NOT NULL,
"ClientEpisodeID" INTEGER NOT NULL,
"TestID" INTEGER NOT NULL,
"Result" FLOAT,
"SequenceNo" INTEGER DEFAULT 0  NOT NULL,
. . . . . 
)



Resolution Resolution
Fixed Problem on 3/23/2007 in version 1.02 build 1


Products Affected Products Affected
ElevateDB Additional Software and Utilities
ElevateDB VCL Client-Server
ElevateDB VCL Client-Server with Source
ElevateDB VCL Standard
ElevateDB VCL Standard with Source
ElevateDB VCL Trial

Image