[ 
https://issues.apache.org/jira/browse/DERBY-3951?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen closed DERBY-3951.
-------------------------------------

    Resolution: Duplicate

Closing the issue as a duplicate of DERBY-2370.

> Derby SQL Result Using 'Not Exists' & 'Except'  Together Seem Incorrect
> -----------------------------------------------------------------------
>
>                 Key: DERBY-3951
>                 URL: https://issues.apache.org/jira/browse/DERBY-3951
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.2.2.0
>         Environment: Windows XP Version 2002 Professional Service Pack 2  /  
> Netbeans IDE 6.1  Build 200805300101  Derby 10.2.2.1 (538595)
>            Reporter: William Eimer
>            Priority: Minor
>         Attachments: d3951.sql
>
>
> Derby seems to produce a different result than Oracle does, for what seems to 
> be an equivalent query. It seems like a bug in that the Oracle equivalent 
> gives the correct result, and the Derby equivalent does not. 
> Both the Derby 'Not Exists'  clause and 'Except' clause seem to work 
> correctly separately. However, when combined the use of the  'Not Exists' 
> clause working with the 'Except' clause seems to render an incorrect result. 
> (Oracle uses the Minus clause, instead of the Except clause, otherwise they 
> are the same.)  Here is the situation:  
> (The example below refers to a textbook example of Sailors Reserving Boats.)
>  -- Query with Correct Result, by both Derby and Oracle
> -- (To see sailors that have reserved all boats.)
> SELECT S.sname
> FROM Sailors S 
> WHERE NOT EXISTS
>  (SELECT B.bid 
>   FROM Boats B
>   WHERE NOT EXISTS
>   (SELECT R.bid
>   FROM Reserves R
>   WHERE R.bid = B.bid and R.sid = S.sid)); 
> -- Correct Result:
> -- Dustin --
> The below Query works in Oracle (with Minus), but does not provide the 
> correct result in Derby (with Except). 
> SELECT S.sname
> FROM Sailors S 
> WHERE NOT EXISTS
>  ((SELECT B.bid 
>   FROM Boats B)
>   EXCEPT
>   (SELECT R.bid
>   FROM Reserves R
>   WHERE R.sid = S.sid));
>  --Oracle Result (using MINUS):
> -- Dustin
> --
> -- Derby Result (as above, using EXCEPT):
> -- Dustin
> -- Lubber
> -- Horatio
> -- Horatio
> -- Fred
> Below are the tables with related data for above examples:
> (Sailors Reserve Boats. Looking at the Reserves tables is it easy to see
> that only one sailor -SID 22 Dustin - has reserved all Boats.)
> SAILORS table
> SID,SNAME,RATING,AGE
> 22,Dustin,7,45
> 29,Brutus,1,33
> 31,Lubber,8,55.5
> 32,Andy,8,25.5
> 58,Rusty,10,35
> 64,Horataio,7,35
> 71,Zorba,10,16
> 74.Horataio,9,35
> 85,Art,3,25.5
> 95,Bob,3,63.6
> 131,Fred,8,55.5
> BOATS table
> BID,BNAME,COLOR
> 101,interlake,blue
> 102,interlake,red
> 103,Clipper,green
> 104,Marine,red
> RESERVES table
> SID,BID,DAY
> 22,101,Oct 10,1998
> 22,102,Oct 10,1998
> 22,103,Oct 8,1998
> 22,104,Oct 7,1998
> 31,102,Nov 10,1998
> 31,103,Nov 6,1998
> 31,104,Nov 12,1998
> 64,101,Sep 5,1998
> 64,102,Sep 8,1998
> 74,103,Sep 8,1998
> 74,103,Dec 8,1998
> 131,101,Oct 8,1998

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to