Description:
I've created a view based on two tables with a simple join.
When I try to sort the results ASC o DESC the sorted results are not correct.
How to repeat:
- two tables
DELIMITER //
DROP TABLE VALORS
//
CREATE TABLE VALORS(
VALOR_ID INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
VALOR_NOM VARCHAR(20) NOT NULL,
VALOR_VALOR VARCHAR(20) NOT NULL,
VALOR_DESCRIPCIO VARCHAR(100),
VALOR_BLOCK VARCHAR(1),
VALOR_ORDENACIO INTEGER default 0,
VALOR_MESTRE_ID INTEGER NOT NULL
)ENGINE=InnoDB, CHARACTER SET latin1, COLLATE latin1_spanish_ci
//
DROP TABLE VALORS_MESTRE
//
CREATE TABLE VALORS_MESTRE(
VALOR_MESTRE_ID INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY,
VALOR_NOM VARCHAR(20),
VALOR_DESCRIPCIO VARCHAR(100),
VALOR_BLOCK VARCHAR(1)
)ENGINE=InnoDB, CHARACTER SET latin1, COLLATE latin1_spanish_ci
//
ALTER TABLE VALORS
ADD CONSTRAINT VALORS_FK1 FOREIGN KEY
(
VALOR_MESTRE_ID
)
REFERENCES VALORS_MESTRE
(
VALOR_MESTRE_ID
)
//
ALTER TABLE VALORS
ADD CONSTRAINT VALORS_UK1 UNIQUE
(
VALOR_NOM,
VALOR_MESTRE_ID
)
//
ALTER TABLE VALORS
ADD CONSTRAINT VALORS_UK2 UNIQUE
(
VALOR_VALOR,
VALOR_MESTRE_ID
)
//
- insert the following values that represents the months
insert into valors_mestre(valor_nom, valor_descripcio,valor_block)
values('MESOS','Mesos de l\'any','S')
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('GENER','01','Gener','S',1, 1)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('FEBRER','02','Febrer','S',1, 2)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('MARÇ','03','Març','S',1, 3)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('ABRIL','04','Abril','S',1, 4)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('MAIG','05','Maig','S',1, 5)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('JUNY','06','Juny','S',1, 6)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('JULIOL','07','Juliol','S',1, 7)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('AGOST','08','Agost','S',1, 8)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('SETEMBRE','09','Setembre','S',1, 9)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('OCTUBRE','10','Octure','S',1, 10)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('NOVEMBRE','11','Novembre','S',1, 11)
//
insert into valors(valor_nom, valor_valor,valor_descripcio, valor_block, valor_mestre_id, valor_ordenacio)
values('DESEMBRE','12','Desembre','S',1, 12)
//
- Create the view
DROP VIEW LLISTA_VALORS
//
CREATE VIEW LLISTA_VALORS AS
SELECT M.VALOR_MESTRE_ID as "Mestre", M.VALOR_NOM as "TIPUS", D.VALOR_NOM AS "Codi", D.VALOR_VALOR as "Valor", D.VALOR_ORDENACIO AS "ORDRE"
FROM VALORS_MESTRE M, VALORS D
WHERE D.VALOR_MESTRE_ID=M.VALOR_MESTRE_ID
//
- query
SELECT valor, codi FROM LLISTA_VALORS
WHERE TIPUS='MESOS' ORDER BY VALOR ASC;