2017-03-23 3 views
0

내 프로젝트에 문제가있어서 MySQL보기에 자동 증분 값을 삽입해야합니다. 여러분이이 장애물을 푸는데 도움이된다면 좋을 것입니다. 여기에 제가 갖고 싶은 코드가 있습니다. 자동 증분 일련 번호 (예 : S.No)를 첫 번째 열로 지정합니다.MySQL의 자동 증분 시리얼 번호보기

CREATE 
    ALGORITHM = UNDEFINED 
    DEFINER = `srems_admin`@`localhost` 
    SQL SECURITY DEFINER 
VIEW `emp_elec_consumption_view` AS 
    SELECT 
     `t1`.`PFNUMBER` AS `PFNUMBER`, 
     `emp`.`EMPNAME` AS `EMPNAME`, 
     `t1`.`MonthAndYear` AS `MonthAndYear`, 
     `qt`.`QTRSCODE` AS `QTRSCODE`, 
     `t1`.`UNITS_CONSUMED` AS `UNITS_CONSUMED`, 
     (`t2`.`FIXED_COMPONENT` + (`t1`.`UNITS_CONSUMED` * `t2`.`RATE_COMPONENT`)) AS `Amount` 
    FROM 
     (((`srems`.`mstqtroccu` `qt` 
     JOIN `srems`.`mstemp` `emp`) 
     JOIN `srems`.`msttariffrate` `t2`) 
     JOIN (SELECT 
      `srems`.`tranmeterreading`.`PFNUMBER` AS `PFNUMBER`, 
       (`srems`.`tranmeterreading`.`CLOSINGREADING` - `srems`.`tranmeterreading`.`OPENINGREADING`) AS `UNITS_CONSUMED`, 
       CONCAT(CONVERT(IF((LENGTH(MONTH(`srems`.`tranmeterreading`.`READINGDATE`)) > 1), MONTH(`srems`.`tranmeterreading`.`READINGDATE`), CONCAT('0', MONTH(`srems`.`tranmeterreading`.`READINGDATE`))) USING UTF8), '/', RIGHT(YEAR(`srems`.`tranmeterreading`.`READINGDATE`), 2)) AS `MonthAndYear`, 
       (SELECT 
         `t`.`TRANSACTIONID` 
        FROM 
         `srems`.`msttariffrate` `t` 
        WHERE 
         (`t`.`TORANGE` > (`srems`.`tranmeterreading`.`CLOSINGREADING` - `srems`.`tranmeterreading`.`OPENINGREADING`)) 
        LIMIT 1) AS `tariffplanid` 
     FROM 
      `srems`.`tranmeterreading`) `t1`) 
    WHERE 
     ((`t1`.`tariffplanid` = `t2`.`TRANSACTIONID`) 
      AND (`t1`.`PFNUMBER` = `qt`.`PFNUMBER`) 
      AND (`t1`.`PFNUMBER` = `emp`.`PFNUMBER`)) 

Pls는 올바른 장소에 물건을 삽입하고 자동 증분 일부터 시작해야한다 S.No를 얻을 수있는 주석으로 게시하고 또한 사전에 첫 번째 열, 타이해야

답변

0

당신의 뷰는 어쨌든 MySQL에서 작업 할 기회가 없으므로 포기할 수도 있습니다.

MySQL은 FROM 절에 하위 쿼리를 허용하지 않습니다. 그리고 쿼리는 많은 서브 쿼리로 꽤 복잡합니다.

또한 변수를 허용하지 않으므로 행 번호를 가져 오는 것이 다소 복잡합니다.

+0

위, 왜 뷰에서 변수를 사용할 수 없습니까? –

+0

@JuanCarlosOropeza. . . 나는 모른다. MySQL을 작성한 사람들에게 물어보십시오. –