
|
If you were logged in you would be able to see more operations.
|
|
|
|
Issue Links:
|
Duplicate
|
|
|
|
This issue is duplicated by:
|
|
CORE-2870
View created from JOIN and LEFT JOIN doesnt order
|
|
|
|
 |
CORE-1974
Problem with joins and shorting in View (with FB2.x, works with FB1.x)
|
|
|
|
|
CORE-2863
Incorrect ordering when selecting from VIEW with DISTINCT and LEFT JOIN
|
|
|
|
|
Relate
|
|
This issue relate to:
|
|
CORE-2871
Outer ORDER BY clause has no effect
|
|
|
|
|
|
This issue is related to:
|
|
|
|
|
|
|
|
|
Selecting from a view that uses distinct and left join returns records in the wrong order if the order by clause doesn't include columns from the right (non-mandatory) table. Test case:
CREATE TABLE FAT
(
IDXXFAT VARCHAR(26) NOT NULL,
PROGFAT INTEGER,
IDXXCCB VARCHAR(20),
NDONFAT INTEGER,
CONSTRAINT PK$_FAT PRIMARY KEY (IDXXFAT)
);
COMMIT;
INSERT INTO FAT (IDXXFAT,PROGFAT,IDXXCCB,NDONFAT) values
('2007.1',1,'Y',1002);
INSERT INTO FAT (IDXXFAT,PROGFAT,IDXXCCB,NDONFAT) values
('2007.2',2,'X',1001);
COMMIT;
CREATE TABLE SCA
(
IDXXSCA VARCHAR(16) NOT NULL,
PROGSCA INTEGER,
IDXXFAT VARCHAR(26),
CONSTRAINT PK$_SCA PRIMARY KEY (IDXXSCA)
);
COMMIT;
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.4',4,'2007.1');
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.3',3,'2007.1');
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.2',2,'2007.2');
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.1',1,'2007.2');
COMMIT;
CREATE VIEW VW$_SCA (
IDXXSCA,
PROGSCA,
IDXXFAT,
IDXXCCB,
NDONFAT
) AS
SELECT DISTINCT
SCA.IDXXSCA,
SCA.PROGSCA,
SCA.IDXXFAT,
FAT.IDXXCCB,
FAT.NDONFAT
FROM
SCA LEFT JOIN FAT ON SCA.IDXXFAT=FAT.IDXXFAT;
COMMIT;
SQL> select * from vw$_sca order by 2 desc;
IDXXSCA PROGSCA IDXXFAT [truncated]
================ ============ ==============
2007.1 1 2007.2
2007.2 2 2007.2
2007.3 3 2007.1
2007.4 4 2007.1
Wrong order.
SQL> select * from vw$_sca order by progsca desc, idxxccb desc;
IDXXSCA PROGSCA IDXXFAT IDXXCCB [truncated]
================ ============ =========== =======
2007.4 4 2007.1 Y
2007.3 3 2007.1 Y
2007.2 2 2007.2 X
2007.1 1 2007.2 X
Correct order.
|
|
Description
|
Selecting from a view that uses distinct and left join returns records in the wrong order if the order by clause doesn't include columns from the right (non-mandatory) table. Test case:
CREATE TABLE FAT
(
IDXXFAT VARCHAR(26) NOT NULL,
PROGFAT INTEGER,
IDXXCCB VARCHAR(20),
NDONFAT INTEGER,
CONSTRAINT PK$_FAT PRIMARY KEY (IDXXFAT)
);
COMMIT;
INSERT INTO FAT (IDXXFAT,PROGFAT,IDXXCCB,NDONFAT) values
('2007.1',1,'Y',1002);
INSERT INTO FAT (IDXXFAT,PROGFAT,IDXXCCB,NDONFAT) values
('2007.2',2,'X',1001);
COMMIT;
CREATE TABLE SCA
(
IDXXSCA VARCHAR(16) NOT NULL,
PROGSCA INTEGER,
IDXXFAT VARCHAR(26),
CONSTRAINT PK$_SCA PRIMARY KEY (IDXXSCA)
);
COMMIT;
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.4',4,'2007.1');
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.3',3,'2007.1');
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.2',2,'2007.2');
INSERT INTO SCA (IDXXSCA,PROGSCA,IDXXFAT) values ('2007.1',1,'2007.2');
COMMIT;
CREATE VIEW VW$_SCA (
IDXXSCA,
PROGSCA,
IDXXFAT,
IDXXCCB,
NDONFAT
) AS
SELECT DISTINCT
SCA.IDXXSCA,
SCA.PROGSCA,
SCA.IDXXFAT,
FAT.IDXXCCB,
FAT.NDONFAT
FROM
SCA LEFT JOIN FAT ON SCA.IDXXFAT=FAT.IDXXFAT;
COMMIT;
SQL> select * from vw$_sca order by 2 desc;
IDXXSCA PROGSCA IDXXFAT [truncated]
================ ============ ==============
2007.1 1 2007.2
2007.2 2 2007.2
2007.3 3 2007.1
2007.4 4 2007.1
Wrong order.
SQL> select * from vw$_sca order by progsca desc, idxxccb desc;
IDXXSCA PROGSCA IDXXFAT IDXXCCB [truncated]
================ ============ =========== =======
2007.4 4 2007.1 Y
2007.3 3 2007.1 Y
2007.2 2 2007.2 X
2007.1 1 2007.2 X
Correct order.
|
Show » |
|