2017-03-23 12 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は正しい場所で物事を挿入し、自動増分1から始めなければなりませんS.Noを取得するためのコメントとして投稿しても、それは事前に最初の列、TYでなければなりません

答えて

0

あなたのビューはMySQLで動作する機会がありませんので、あきらめても構いません。

MySQLではFROM句にサブクエリを使用できません。そして、あなたのクエリはかなり複雑で、多くのサブクエリがあります。

変数も許可されていないので、行番号を取得するのはむしろ複雑です。

+0

なぜ、ビューで変数を使用できないのですか? –

+0

@JuanCarlosOropeza。 。 。知りません。 MySQLを書いた人に尋ねてください。 –

関連する問題