I am running a query using the Oracle & Internal SQL modes on version
7.4.3.30 that should return results, but it is not. Below is an example.
Is this a bug or intentional? If it is intentional, can you please give me
an explaination why it works this way. Thanks for you time.
Here are the table DDL and insert statements for the example. The example
assumes you have a schema named EXAMPLE
CREATE TABLE "EXAMPLE"."M1"
(
"OID_M1" Integer NOT NULL,
"OID_S" Integer,
"FLAG_DEL" Char (1) ASCII NOT NULL DEFAULT 'F',
PRIMARY KEY ("OID_M1"),
CONSTRAINT "CK_M1_FLAG_DEL" CHECK "FLAG_DEL" IN ('F','T')
)
CREATE TABLE "EXAMPLE"."M2"
(
"OID_M2" Integer NOT NULL,
"OID_M1" Integer NOT NULL,
"FLAG_DEL" Char (1) ASCII NOT NULL DEFAULT 'F',
PRIMARY KEY ("OID_M2"),
CONSTRAINT "CK_M2_FLAG_DEL" CHECK "FLAG_DEL" IN ('F','T')
)
CREATE TABLE "EXAMPLE"."S"
(
"OID_S" Integer NOT NULL,
"FLAG_DEL" Char (1) ASCII NOT NULL DEFAULT 'F',
PRIMARY KEY ("OID_S"),
CONSTRAINT "CK_S_FLAG_DEL" CHECK "FLAG_DEL" IN ('F','T')
)
INSERT INTO "EXAMPLE"."M1" (OID_M1,OID_S) VALUES (1,2)
INSERT INTO "EXAMPLE"."M1" (OID_M1,OID_S) VALUES (3,4)
INSERT INTO "EXAMPLE"."M1" (OID_M1,OID_S) VALUES (5,6)
INSERT INTO "EXAMPLE"."M1" (OID_M1,OID_S) VALUES (7,8)
INSERT INTO "EXAMPLE"."M2" (OID_M2,OID_M1) VALUES (9,1)
INSERT INTO "EXAMPLE"."M2" (OID_M2,OID_M1) VALUES (10,3)
INSERT INTO "EXAMPLE"."M2" (OID_M2,OID_M1) VALUES (11,5)
INSERT INTO "EXAMPLE"."M2" (OID_M2,OID_M1) VALUES (12,7)
INSERT INTO "EXAMPLE"."S" (OID_S) VALUES (2)
INSERT INTO "EXAMPLE"."S" (OID_S) VALUES (4)
INSERT INTO "EXAMPLE"."S" (OID_S) VALUES (6)
INSERT INTO "EXAMPLE"."S" (OID_S) VALUES (8)
This is the SQL statement that does not return results.
SELECT *
FROM EXAMPLE.M1, EXAMPLE.M2, EXAMPLE.S
WHERE M1.OID_M1 = M2.OID_M1
AND M1.OID_S = S.OID_S(+)
AND M1.FLAG_DEL <> 'T'
AND M2.FLAG_DEL <> 'T'
Below are several variations of the same query that do produce the results
I expect.
SELECT *
FROM EXAMPLE.M1, EXAMPLE.M2, EXAMPLE.S
WHERE M1.OID_M1 = M2.OID_M1
AND M1.OID_S = S.OID_S(+)
AND M2.FLAG_DEL <> 'T'
AND M1.FLAG_DEL <> 'T'
SELECT *
FROM EXAMPLE.M1, EXAMPLE.M2, EXAMPLE.S
WHERE M1.OID_M1 = M2.OID_M1
AND M2.FLAG_DEL <> 'T'
AND M1.OID_S = S.OID_S(+)
AND M1.FLAG_DEL <> 'T'
SELECT *
FROM EXAMPLE.M1 LEFT OUTER JOIN EXAMPLE.S on M1.OID_S = S.OID_S, EXAMPLE.M2
WHERE M1.OID_M1 = M2.OID_M1
AND M1.FLAG_DEL <> 'T'
AND M2.FLAG_DEL <> 'T'
SELECT *
FROM EXAMPLE.M1, EXAMPLE.M2, EXAMPLE.S
WHERE M1.OID_M1 = M2.OID_M1
AND M2.FLAG_DEL <> 'T'
AND M1.FLAG_DEL <> 'T'
AND M1.OID_S = S.OID_S(+)
--
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]