2017-03-23 3 views
0

Wenn ein Problem mit meinem Projekt einen automatischen inkrementellen Wert für meine MySQL-Ansicht einfügen muss, wäre ich nett, wenn Sie bei der Lösung dieses Hindernisses helfen. Hier ist der Code, den ich haben möchte automatische inkrementelle Seriennummer (zB S.No) als erste Spalte.Auto Inkrementelle Seriennummer für MySQL View

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 fügen Sie die Dinge an der richtigen Stelle und per Post als Kommentar S.No zu erhalten, die Auto-inkrementell sollte ab dem 1. und es sollte auch die erste Spalte sein, ty im Voraus

Antwort

0

Ihre Ansicht hat sowieso keine Chance, in MySQL zu arbeiten, also können Sie genauso gut aufgeben.

MySQL erlaubt keine Unterabfragen in der FROM Klausel. Und Ihre Abfrage ist ziemlich kompliziert mit vielen Unterabfragen.

Es erlaubt auch keine Variablen, also ist es schwierig, eine Zeilennummer zu bekommen.

+0

Ups, warum kann nicht Variablen in der Ansicht verwenden? –

+0

@JuanCarlosOropeza. . . Ich weiß es nicht. Fragen Sie die Leute, die MySQL geschrieben haben. –