Advertisement
BROTH3RCAST

Database vuoto (Smistamento dati e salvataggio)

May 27th, 2021 (edited)
856
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 26.14 KB | None | 0 0
  1. -- --------------------------------------------------------
  2. -- Host:                         127.0.0.1
  3. -- Versione server:              10.4.18-MariaDB - mariadb.org binary distribution
  4. -- S.O. server:                  Win64
  5. -- HeidiSQL Versione:            11.2.0.6213
  6. -- --------------------------------------------------------
  7.  
  8. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  9. /*!40101 SET NAMES utf8 */;
  10. /*!50503 SET NAMES utf8mb4 */;
  11. /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
  12. /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
  13. /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
  14.  
  15.  
  16. -- Dump della struttura del database sensorhub
  17. CREATE DATABASE IF NOT EXISTS `sensorhub` /*!40100 DEFAULT CHARACTER SET utf8mb4 */;
  18. USE `sensorhub`;
  19.  
  20. -- Dump della struttura di funzione sensorhub.get_stazione
  21. DELIMITER //
  22. CREATE FUNCTION `get_stazione`(`indirizzoMac` VARCHAR(50),
  23.     `operazione` INT
  24. ) RETURNS int(11)
  25. BEGIN
  26.  
  27. -- tipo opezione 0 = inseriento e 1 = lettura
  28.  
  29. DECLARE mstazione INT ;
  30.  
  31.     -- Recupero indice della stazione (se esiste)
  32.     SET mstazione =  (SELECT idx FROM tbl_hub WHERE chiave = indirizzoMac);
  33.  
  34.     /* testo se sto facendo inserimento */
  35.     if operazione = 0 then
  36.  
  37.         -- Se non esiste significa che è la prima volta è creo oassociazione
  38.         if mstazione IS NULL  then
  39.             INSERT INTO tbl_hub (chiave) VALUE (indirizzoMac);
  40.             set mstazione =  (SELECT idx FROM tbl_hub WHERE chiave = indirizzoMac);
  41.         else
  42.             set mstazione = -1;
  43.         END if;
  44.  
  45.     ELSE
  46.  
  47.         -- Se non esiste stazione significa inseriremento errato/violazione privacy
  48.         if mstazione IS NULL  then
  49.             set mstazione = -1;
  50.         END if;
  51.  
  52.     END if;
  53.  
  54.     -- ritorno risultato
  55.     RETURN mstazione;
  56.  
  57. END//
  58. DELIMITER ;
  59.  
  60. -- Dump della struttura di procedura sensorhub.sp_fill_tbl_bme280
  61. DELIMITER //
  62. CREATE PROCEDURE `sp_fill_tbl_bme280`(
  63.     IN `idxrow` INT,
  64.     IN `temperatura` DECIMAL(10,2),
  65.     IN `umidita` DECIMAL(10,2),
  66.     IN `pressione` DECIMAL(10,2),
  67.     IN `altitudine` DECIMAL(10,2)
  68. )
  69. BEGIN
  70.  
  71.  
  72. INSERT INTO tbl_bme280 (idxrow, temperatura, umidita, pressione, altitudine) VALUE (idxrow, temperatura, umidita, pressione, altitudine);
  73.  
  74.  
  75.  
  76.  
  77. END//
  78. DELIMITER ;
  79.  
  80. -- Dump della struttura di procedura sensorhub.sp_fill_tbl_ccs811
  81. DELIMITER //
  82. CREATE PROCEDURE `sp_fill_tbl_ccs811`(
  83.     IN `idxrow` INT,
  84.     IN `co2` DECIMAL(10,2),
  85.     IN `tvoc` DECIMAL(10,2)
  86. )
  87. BEGIN
  88.  
  89. INSERT INTO tbl_ccs811 (idxrow, co2, tvoc) VALUES (idxrow, co2, tvoc);
  90.  
  91. END//
  92. DELIMITER ;
  93.  
  94. -- Dump della struttura di procedura sensorhub.sp_fill_tbl_ky038
  95. DELIMITER //
  96. CREATE PROCEDURE `sp_fill_tbl_ky038`(
  97.     IN `idxrow` INT,
  98.     IN `noise` DECIMAL(10,2)
  99. )
  100. BEGIN
  101.     INSERT INTO tbl_ky038 (idxrow, noise) VALUE (idxrow, noise);
  102. END//
  103. DELIMITER ;
  104.  
  105. -- Dump della struttura di procedura sensorhub.sp_fill_tbl_neo6m
  106. DELIMITER //
  107. CREATE PROCEDURE `sp_fill_tbl_neo6m`(
  108.     IN `idxrow` INT,
  109.     IN `lng` DECIMAL(10,5),
  110.     IN `lat` DECIMAL(10,5)
  111. )
  112. BEGIN
  113.     INSERT INTO tbl_neo6m (idxrow, lng, lat) value(idxrow, lng, lat);
  114. END//
  115. DELIMITER ;
  116.  
  117. -- Dump della struttura di procedura sensorhub.sp_fill_tbl_rilevamento
  118. DELIMITER //
  119. CREATE PROCEDURE `sp_fill_tbl_rilevamento`(
  120.     IN `idx` INT,
  121.     IN `mdata` DATETIME,
  122.     IN `mora` TIME
  123. )
  124. BEGIN
  125.  
  126.  
  127.     INSERT INTO tbl_rilevamento
  128.     (
  129.         idx,
  130.         datarilevazione,
  131.         orarilevazione,
  132.         giorno,
  133.         mese,
  134.         anno,
  135.         settimana,
  136.         nomegiorno,
  137.         nomemese
  138.     )
  139.     SELECT
  140.         idx,
  141.         DATE_FORMAT(mdata, '%Y-%m-%d'),
  142.         mora,
  143.         DAYOFMONTH(mdata),
  144.         MONTH(mdata),
  145.         YEAR(mdata),
  146.         WEEK(mdata),
  147.         DAYNAME(mdata),
  148.         MONTHNAME(mdata)
  149.     ;
  150.  
  151.  
  152. END//
  153. DELIMITER ;
  154.  
  155. -- Dump della struttura di procedura sensorhub.sp_fill_tbl_veml6070
  156. DELIMITER //
  157. CREATE PROCEDURE `sp_fill_tbl_veml6070`(
  158.     IN `idxrow` INT,
  159.     IN `uv` DECIMAL(10,2)
  160. )
  161. BEGIN
  162.     INSERT INTO tbl_veml6070 (idxrow, uv) VALUE (idxrow, uv);
  163. END//
  164. DELIMITER ;
  165.  
  166. -- Dump della struttura di procedura sensorhub.sp_gestioneid
  167. DELIMITER //
  168. CREATE PROCEDURE `sp_gestioneid`(
  169.     INOUT `in_idx` INT,
  170.     INOUT `in_chiave` VARCHAR(50),
  171.     OUT `old_chiave` VARCHAR(50)
  172. )
  173. BEGIN
  174.  
  175.     declare midx INT ;
  176.     declare mchiave CHAR(32) ;
  177.     declare moldchiave CHAR(32) ;
  178.     declare cnt INT;
  179.     DECLARE errocode INT;
  180.     DECLARE step INT;
  181.    
  182.  
  183.     # controllo presenza idx
  184. #   if in_idx > 0 and LENGTH(in_chiave) > 0 then
  185.     if in_idx != 0 then
  186.         SELECT COUNT(1) INTO cnt FROM tbl_hub WHERE idx = in_idx AND chiave = in_chiave;
  187.        
  188.         if cnt = 0 then
  189.             #set mchiave := SUBSTRING(MD5(RAND()) FROM 1 FOR 32);
  190.             #INSERT INTO tbl_hub (chiave) VALUE (mchiave);
  191.             #SELECT MAX(idx) INTO midx FROM tbl_hub;
  192.             set mchiave = 'Dispositivo non corretto';
  193.             set moldchiave = 'Proprietà violata';
  194.             set midx = 9999;
  195.             SET step = 9999;
  196.         else
  197.             set mchiave := SUBSTRING(MD5(RAND()) FROM 1 FOR 32);
  198.             SELECT chiave INTO moldchiave FROM tbl_hub WHERE idx = in_idx AND chiave = in_chiave;
  199.             UPDATE tbl_hub set chiave = mchiave WHERE idx = in_idx ;
  200.             SET midx = in_idx;
  201.             set step = 8888;
  202.         END if;
  203.     ELSE
  204.         set mchiave := SUBSTRING(MD5(RAND()) FROM 1 FOR 32);
  205.         INSERT INTO tbl_hub (chiave) VALUE (mchiave);
  206.         SELECT MAX(idx) into midx FROM tbl_hub;
  207.         set step = 7777;
  208.     END if;
  209.  
  210.     set in_idx = midx;
  211.     set in_chiave = mchiave;
  212.     SET old_chiave = moldchiave;
  213.  
  214.  
  215. END//
  216. DELIMITER ;
  217.  
  218. -- Dump della struttura di procedura sensorhub.sp_getanno
  219. DELIMITER //
  220. CREATE PROCEDURE `sp_getanno`(
  221.     IN `in_idx` INT,
  222.     IN `mdata` VARCHAR(50),
  223.     IN `Tipologia` INT
  224. )
  225. BEGIN
  226.  
  227.  
  228. /*
  229.     Tipologia:
  230.             Min     = 0
  231.             Media   = 1
  232.             Max = 2
  233.  
  234. */
  235.  
  236.     if Tipologia = 0 then
  237.  
  238.         SELECT
  239.     --      v1.idx,
  240.     --      v1.idxrow,
  241.     --      v1.datarilevazione,
  242.     --      v1.orarilevazione,
  243.     --      avg(v1.giorno) giorno,
  244.             avg(v1.mese) mese,
  245.             avg(v1.anno) anno,
  246.             v1.nomemese orarilevazione,
  247.             -- cast(v1.mese AS VARCHAR(10)) + '-' + cast(v1.anno as VARCHAR(2)) orarilevazione,
  248.     --      CONCAT(concat(v1.Anno, '-'),mese) orarilevazione,
  249.            
  250.     --      v1.nomegiorno,
  251.     --      v1.nomemese,
  252.            
  253.             min(v2.temperatura) temperatura,
  254.             min(v2.umidita) umidita,
  255.             min(v2.pressione) pressione,
  256.             min(v2.altitudine) altitudine,
  257.            
  258.             min(v3.lng) lng,
  259.             min(v3.lat) lat,
  260.            
  261.             min(v4.noise) noise,
  262.            
  263.             min(v5.co2) co2,
  264.             min(v5.tvoc) tvoc
  265.            
  266.         FROM
  267.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  268.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  269.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  270.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  271.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  272.         WHERE
  273.                     1 = 1
  274.             and v1.idx = in_idx
  275.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  276.         GROUP BY
  277.             v1.mese,
  278.             v1.anno
  279.         ORDER BY
  280.             v1.idxrow ASC;
  281.     END if;
  282.  
  283.  
  284.     if Tipologia = 1 then
  285.  
  286.         SELECT
  287.     --      v1.idx,
  288.     --      v1.idxrow,
  289.     --      v1.datarilevazione,
  290.     --      v1.orarilevazione,
  291.     --      avg(v1.giorno) giorno,
  292.             avg(v1.mese) mese,
  293.             avg(v1.anno) anno,
  294.             v1.nomemese orarilevazione,
  295.     --      v1.nomegiorno,
  296.     --      v1.nomemese,
  297. --          CONCAT(concat(v1.Anno, '-'),mese) orarilevazione,
  298.            
  299.             max(v2.temperatura) temperatura,
  300.             max(v2.umidita) umidita,
  301.             max(v2.pressione) pressione,
  302.             max(v2.altitudine) altitudine,
  303.            
  304.             max(v3.lng) lng,
  305.             max(v3.lat) lat,
  306.            
  307.             max(v4.noise) noise,
  308.            
  309.             max(v5.co2) co2,
  310.             max(v5.tvoc) tvoc
  311.            
  312.         FROM
  313.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  314.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  315.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  316.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  317.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  318.         WHERE
  319.                     1 = 1
  320.             and v1.idx = in_idx
  321.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  322.         GROUP BY
  323.             v1.mese,
  324.             v1.anno
  325.         ORDER BY
  326.             v1.idxrow ASC;
  327.     END if;
  328.  
  329.     if Tipologia = 2 then
  330.  
  331.         SELECT
  332.     --      v1.idx,
  333.     --      v1.idxrow,
  334.     --      v1.datarilevazione,
  335.     --      v1.orarilevazione,
  336.     --      avg(v1.giorno) giorno,
  337.             avg(v1.mese) mese,
  338.             avg(v1.anno) anno,
  339.             v1.nomemese orarilevazione,
  340.     --      v1.nomegiorno,
  341.     --      v1.nomemese,
  342.     --      CONCAT(concat(v1.Anno, '-'),mese) orarilevazione,
  343.            
  344.             avg(v2.temperatura) temperatura,
  345.             avg(v2.umidita) umidita,
  346.             avg(v2.pressione) pressione,
  347.             avg(v2.altitudine) altitudine,
  348.            
  349.             avg(v3.lng) lng,
  350.             avg(v3.lat) lat,
  351.            
  352.             avg(v4.noise) noise,
  353.            
  354.             avg(v5.co2) co2,
  355.             avg(v5.tvoc) tvoc
  356.            
  357.         FROM
  358.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  359.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  360.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  361.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  362.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  363.         WHERE
  364.                     1 = 1
  365.             and v1.idx = in_idx
  366.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  367.         GROUP BY
  368.             v1.mese,
  369.             v1.anno
  370.         ORDER BY
  371.             v1.idxrow ASC;
  372.     END if;
  373.  
  374.  
  375.  
  376. END//
  377. DELIMITER ;
  378.  
  379. -- Dump della struttura di procedura sensorhub.sp_getgiorno
  380. DELIMITER //
  381. CREATE PROCEDURE `sp_getgiorno`(
  382.     IN `in_idx` INT,
  383.     IN `mdata` VARCHAR(50)
  384. )
  385. BEGIN
  386.  
  387.     SELECT
  388.         v1.idx,
  389.         v1.idxrow,
  390.         v1.datarilevazione,
  391.         v1.orarilevazione,
  392.         v1.giorno,
  393.         v1.mese,
  394.         v1.anno,
  395.         v1.nomegiorno,
  396.         v1.nomemese,
  397.        
  398.         v2.temperatura,
  399.         v2.umidita,
  400.         v2.pressione,
  401.         v2.altitudine,
  402.        
  403.         v3.lng,
  404.         v3.lat,
  405.        
  406.         v4.noise,
  407.        
  408.         v5.co2,
  409.         v5.tvoc
  410.        
  411.     FROM
  412.         tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  413.         inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  414.         inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  415.         inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  416.         inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  417.     WHERE
  418.                 1 = 1
  419.         and v1.idx = in_idx
  420.         AND     v1.datarilevazione = mdata
  421.     ORDER BY
  422.         v1.idxrow asc;
  423.  
  424. END//
  425. DELIMITER ;
  426.  
  427. -- Dump della struttura di procedura sensorhub.sp_getmese
  428. DELIMITER //
  429. CREATE PROCEDURE `sp_getmese`(
  430.     IN `in_idx` INT,
  431.     IN `mdata` VARCHAR(50),
  432.     IN `Tipologia` INT
  433. )
  434. BEGIN
  435.  
  436. /*
  437.     Tipologia:
  438.             Min     = 0
  439.             Media   = 1
  440.             Max = 2
  441.  
  442. */
  443.  
  444.     if Tipologia = 0 then
  445.  
  446.    
  447.         SELECT
  448.  
  449.             avg(v1 .giorno) giorno,
  450.             avg(v1.mese) mese,
  451.             avg(v1.anno) anno,
  452.             v1.giorno orarilevazione,
  453.  
  454.            
  455.             min(v2.temperatura) temperatura,
  456.             min(v2.umidita) umidita,
  457.             min(v2.pressione) pressione,
  458.             min(v2.altitudine) altitudine,
  459.            
  460.             min(v3.lng) lng,
  461.             min(v3.lat) lat,
  462.            
  463.             min(v4.noise) noise,
  464.            
  465.             min(v5.co2) co2,
  466.             min(v5.tvoc) tvoc
  467.            
  468.         FROM
  469.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  470.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  471.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  472.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  473.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  474.         WHERE
  475.                     1 = 1
  476.             and v1.idx = in_idx
  477.             AND     v1.mese = (SELECT mese from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  478.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  479.         GROUP BY
  480.             v1.giorno
  481.         ORDER BY
  482.             v1.idxrow asc;
  483.            
  484.     END if;
  485.  
  486.  
  487.     if Tipologia = 1 then
  488.  
  489.    
  490.         SELECT
  491.  
  492.             avg(v1 .giorno) giorno,
  493.             avg(v1.mese) mese,
  494.             avg(v1.anno) anno,
  495.             v1.giorno orarilevazione,
  496.  
  497.            
  498.             avg(v2.temperatura) temperatura,
  499.             avg(v2.umidita) umidita,
  500.             avg(v2.pressione) pressione,
  501.             avg(v2.altitudine) altitudine,
  502.            
  503.             avg(v3.lng) lng,
  504.             avg(v3.lat) lat,
  505.            
  506.             avg(v4.noise) noise,
  507.            
  508.             avg(v5.co2) co2,
  509.             avg(v5.tvoc) tvoc
  510.            
  511.         FROM
  512.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  513.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  514.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  515.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  516.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  517.         WHERE
  518.                     1 = 1
  519.             and v1.idx = in_idx
  520.             AND     v1.mese = (SELECT mese from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  521.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  522.         GROUP BY
  523.             v1.giorno
  524.         ORDER BY
  525.             v1.idxrow asc;
  526.            
  527.     END if;
  528.  
  529.     if Tipologia = 2 then
  530.  
  531.    
  532.         SELECT
  533.  
  534.             avg(v1 .giorno) giorno,
  535.             avg(v1.mese) mese,
  536.             avg(v1.anno) anno,
  537.             v1.giorno orarilevazione,
  538.  
  539.            
  540.             max(v2.temperatura) temperatura,
  541.             max(v2.umidita) umidita,
  542.             max(v2.pressione) pressione,
  543.             max(v2.altitudine) altitudine,
  544.            
  545.             max(v3.lng) lng,
  546.             max(v3.lat) lat,
  547.            
  548.             max(v4.noise) noise,
  549.            
  550.             max(v5.co2) co2,
  551.             max(v5.tvoc) tvoc
  552.            
  553.         FROM
  554.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  555.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  556.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  557.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  558.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  559.         WHERE
  560.                     1 = 1
  561.             and v1.idx = in_idx
  562.             AND     v1.mese = (SELECT mese from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  563.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = mdata LIMIT 1)
  564.         GROUP BY
  565.             v1.giorno
  566.         ORDER BY
  567.             v1.idxrow asc;
  568.            
  569.     END if;
  570.  
  571. END//
  572. DELIMITER ;
  573.  
  574. -- Dump della struttura di procedura sensorhub.sp_getsettimana
  575. DELIMITER //
  576. CREATE PROCEDURE `sp_getsettimana`(
  577.     IN `in_idx` INT,
  578.     IN `mdata` VARCHAR(50),
  579.     IN `Tipologia` INT
  580. )
  581. BEGIN
  582. /*
  583.     Tipologia:
  584.             Min     = 0
  585.             Media   = 1
  586.             Max = 2
  587.  
  588. */
  589.  
  590.     if Tipologia = 0 then
  591.  
  592.         SELECT
  593.             min(v1.datarilevazione) Dal,
  594.             max(v1.datarilevazione) Al,
  595.             max(v1.nomegiorno) orarilevazione,
  596.            
  597.             avg(v1.settimana) + 1 settimana,
  598.            
  599.             min(v2.temperatura) temperatura,
  600.             min(v2.umidita) umidita,
  601.             min(v2.pressione) pressione,
  602.             min(v2.altitudine) altitudine,
  603.            
  604.             min(v3.lng) lng,
  605.             min(v3.lat) lat,
  606.            
  607.             min(v4.noise) noise,
  608.            
  609.             min(v5.co2) co2,
  610.             min(v5.tvoc) tvoc
  611.                        
  612.         FROM
  613.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  614.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  615.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  616.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  617.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  618.         WHERE
  619.                     1 = 1
  620.             and v1.idx = 1
  621.             AND     v1.settimana = (SELECT settimana from tbl_rilevamento WHERE datarilevazione = '2019-05-14' LIMIT 1)
  622.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = '2019-05-14' LIMIT 1)
  623.         GROUP BY
  624.             v1.giorno
  625.         ORDER BY
  626.             v1.idxrow asc;
  627.  
  628.     END if;
  629.    
  630.     if Tipologia = 1 then
  631.  
  632.         SELECT
  633.             min(v1.datarilevazione) Dal,
  634.             max(v1.datarilevazione) Al,
  635.             avg(v1.settimana) + 1 settimana,
  636.             max(v1.nomegiorno) orarilevazione,
  637.            
  638.             avg(v2.temperatura) temperatura,
  639.             avg(v2.umidita) umidita,
  640.             avg(v2.pressione) pressione,
  641.             avg(v2.altitudine) altitudine,
  642.            
  643.             avg(v3.lng) lng,
  644.             avg(v3.lat) lat,
  645.            
  646.             avg(v4.noise) noise,
  647.            
  648.             avg(v5.co2) co2,
  649.             avg(v5.tvoc) tvoc
  650.                        
  651.         FROM
  652.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  653.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  654.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  655.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  656.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  657.         WHERE
  658.                     1 = 1
  659.             and v1.idx = 1
  660.             AND     v1.settimana = (SELECT settimana from tbl_rilevamento WHERE datarilevazione = '2019-05-14' LIMIT 1)
  661.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = '2019-05-14' LIMIT 1)
  662.         GROUP BY
  663.             v1.giorno
  664.         ORDER BY
  665.             v1.idxrow asc;
  666.  
  667.     END if;
  668.  
  669.     if Tipologia = 2 then
  670.  
  671.         SELECT
  672.             min(v1.datarilevazione) Dal,
  673.             max(v1.datarilevazione) Al,
  674.             avg(v1.settimana) + 1 settimana,
  675.             max(v1.nomegiorno) orarilevazione,
  676.            
  677.             max(v2.temperatura) temperatura,
  678.             max(v2.umidita) umidita,
  679.             max(v2.pressione) pressione,
  680.             max(v2.altitudine) altitudine,
  681.            
  682.             max(v3.lng) lng,
  683.             max(v3.lat) lat,
  684.            
  685.             max(v4.noise) noise,
  686.            
  687.             max(v5.co2) co2,
  688.             max(v5.tvoc) tvoc
  689.                        
  690.         FROM
  691.             tbl_rilevamento v1 inner JOIN tbl_bme280 v2 ON v1.idxrow = v2.idxrow
  692.             inner JOIN tbl_neo6m v3 ON v1.idxrow = v3.idxrow
  693.             inner JOIN tbl_ky038 v4 ON v1.idxrow = v4.idxrow
  694.             inner JOIN tbl_ccs811 v5 ON v1.idxrow = v5.idxrow
  695.             inner JOIN tbl_veml6070 v7 ON v1.idxrow = v7.idxrow
  696.         WHERE
  697.                     1 = 1
  698.             and v1.idx = 1
  699.             AND     v1.settimana = (SELECT settimana from tbl_rilevamento WHERE datarilevazione = '2019-05-14' LIMIT 1)
  700.             AND     v1.anno = (SELECT anno from tbl_rilevamento WHERE datarilevazione = '2019-05-14' LIMIT 1)
  701.         GROUP BY
  702.             v1.giorno
  703.         ORDER BY
  704.             v1.idxrow asc;
  705.            
  706.     END if;
  707.  
  708. END//
  709. DELIMITER ;
  710.  
  711. -- Dump della struttura di procedura sensorhub.sp_InserimentoDati
  712. DELIMITER //
  713. CREATE PROCEDURE `sp_InserimentoDati`(
  714.     IN `in_mac` VARCHAR(50),
  715.     IN `temperatura` DOUBLE(10,2),
  716.     IN `umidita` DOUBLE(10,2),
  717.     IN `pressione` DOUBLE(10,2),
  718.     IN `altitudine` DOUBLE(10,2),
  719.     IN `uv` DOUBLE(10,2),
  720.     IN `co2` DOUBLE(10,2),
  721.     IN `tvoc` DOUBLE(10,2),
  722.     IN `noise` DOUBLE(10,2),
  723.     IN `lng` DOUBLE(10,5),
  724.     IN `lat` DOUBLE(10,5),
  725.     IN `mdata` VARCHAR(50),
  726.     IN `mora` VARCHAR(50)
  727. )
  728. BEGIN
  729.  
  730.  
  731.     DECLARE midxrow INT ;
  732.     DECLARE in_idx INT;
  733.     DECLARE mStazione INT;
  734.  
  735.  
  736.  
  737.     -- Controllo esistenza stazione
  738.     -- Tipo opezione 0 = inseriento e 1 = lettura
  739.     set in_idx = (SELECT `get_stazione`(in_mac, 0));
  740.  
  741. set in_idx = 1;
  742.  
  743.     if in_idx = -1 then
  744.    
  745.         -- Stazione inesistente
  746.         SELECT 'Il codice inserito è errato';
  747.    
  748.     else
  749.    
  750.         CALL `sp_fill_tbl_rilevamento`(in_idx, mdata, mora);
  751.         SELECT max(idxrow) INTO midxrow from tbl_rilevamento WHERE idx = in_idx;
  752.         CALL `sp_fill_tbl_bme280`(midxrow, temperatura, umidita, pressione, altitudine);
  753.         CALL `sp_fill_tbl_neo6m`(midxrow, lng, lat);
  754.         CALL `sp_fill_tbl_ky038`(midxrow, noise);
  755.         CALL `sp_fill_tbl_ccs811` (midxrow, co2, tvoc);
  756.         CALL `sp_fill_tbl_veml6070` (midxrow, uv );
  757.        
  758.         SELECT in_idx;
  759.    
  760.     END if;
  761.  
  762.  
  763.  
  764.  
  765. END//
  766. DELIMITER ;
  767.  
  768. -- Dump della struttura di procedura sensorhub.sp_leggiRilevamentoMaster
  769. DELIMITER //
  770. CREATE PROCEDURE `sp_leggiRilevamentoMaster`(
  771.     IN `indirizzoMac` VARCHAR(50),
  772.     IN `tipoQuery` INT,
  773.     IN `mdata` VARCHAR(50)
  774. )
  775. BEGIN
  776.  
  777. /*
  778. tipoQuery:
  779.  
  780.      1 Query giornaliera
  781.      2 Query Settimanale MAX
  782.      3 Query Settimanale MIN
  783.      4 Query Settimanale AVG
  784.      5 Query Mensile MAX
  785.      6 Query Mensile MIN
  786.      7 Query Mensile AVG
  787.      8 Query Annuale MAX
  788.      9 Query Annuale MIN
  789.     10 Query Annulae AVG
  790.  
  791.     Tipologia:
  792.             Min     = 0
  793.             Media   = 1
  794.             Max = 2
  795.  
  796. */
  797.  
  798.  
  799.  
  800.     DECLARE mStazione INT;
  801.     DECLARE midxrow INT ;
  802.  
  803.     -- Controllo esistenza stazione
  804.     set mStazione = (SELECT `get_stazione`(indirizzoMac, 1));
  805.  
  806.     if mStazione = -1 then
  807.    
  808.         -- Stazione inesistente
  809.         SELECT 'Il codice inserito è errato';
  810.    
  811.     else
  812.    
  813.         -- Check
  814.         -- SELECT mStazione, indirizzoMac, mdata, '1' TipoOperazione;
  815.        
  816.        
  817.         if tipoQuery = 1 then
  818.             CALL `sp_getgiorno`(mStazione, mdata);
  819.         END if;
  820.  
  821.    
  822.         -- SETTIMANALE
  823.         -- SETTIMANALE
  824.         -- SETTIMANALE
  825.        
  826.        
  827.         -- Sdettimanale Max
  828.         if tipoQuery = 2 then
  829.             CALL `sp_getsettimana`(mStazione, mdata, '0');
  830.         END if;
  831.        
  832.         -- Sdettimanale Min
  833.         if tipoQuery = 3 then
  834.             CALL `sp_getsettimana`(mStazione, mdata, '1');
  835.         END if;
  836.        
  837.         -- Sdettimanale AVG
  838.         if tipoQuery = 4 then
  839.             CALL `sp_getsettimana`(mStazione, mdata, '2');
  840.         END if;
  841.  
  842.  
  843.         -- MENSILE
  844.         -- MENSILE
  845.         -- MENSILE
  846.        
  847.         -- Mensile max
  848.         if tipoQuery = 5 then
  849.             CALL `sp_getmese`(mStazione, mdata, '0');
  850.         END if;
  851.        
  852.         -- Mensile min
  853.         if tipoQuery = 6 then
  854.             CALL `sp_getmese`(mStazione, mdata, '1');
  855.         END if;
  856.        
  857.         -- Mensile avg
  858.         if tipoQuery = 7 then
  859.             CALL `sp_getmese`(mStazione, mdata, '2');
  860.         END if;
  861.  
  862.  
  863.  
  864.         -- ANNO
  865.         -- ANNO
  866.         -- ANNO
  867.        
  868.         -- Anno max
  869.         if tipoQuery = 8 then
  870.             CALL `sp_getanno`(mStazione, mdata, '0');
  871.         END if;
  872.        
  873.         -- Anno min
  874.         if tipoQuery = 9 then
  875.             CALL `sp_getanno`(mStazione, mdata, '2');
  876.         END if;
  877.        
  878.         -- Anno avg
  879.         if tipoQuery = 10 then
  880.             CALL `sp_getanno`(mStazione, mdata, '1');
  881.         END if;
  882.        
  883.  
  884.  
  885.    
  886.     END if;
  887.  
  888.  
  889.  
  890.  
  891.  
  892. END//
  893. DELIMITER ;
  894.  
  895. -- Dump della struttura di procedura sensorhub.sp_resetall
  896. DELIMITER //
  897. CREATE PROCEDURE `sp_resetall`()
  898. BEGIN
  899.    
  900.  
  901.     TRUNCATE TABLE tbl_bme280;
  902. --  TRUNCATE TABLE tbl_bn220;
  903.     TRUNCATE TABLE tbl_ky038;
  904. --  TRUNCATE TABLE tbl_mq135;
  905.     TRUNCATE TABLE tbl_veml6070;
  906.        
  907.     DELETE FROM tbl_rilevamento;
  908.     ALTER TABLE tbl_rilevamento AUTO_INCREMENT = 1;
  909.  
  910. END//
  911. DELIMITER ;
  912.  
  913. -- Dump della struttura di tabella sensorhub.tbl_bme280
  914. CREATE TABLE IF NOT EXISTS `tbl_bme280` (
  915.   `idxrow` int(11) NOT NULL,
  916.   `temperatura` double(10,2) DEFAULT NULL,
  917.   `umidita` double(10,2) DEFAULT NULL,
  918.   `pressione` double(10,2) DEFAULT NULL,
  919.   `altitudine` double(10,2) DEFAULT NULL,
  920.   KEY `idxrow` (`idxrow`),
  921.   CONSTRAINT `FK_tbl_bme280_tbl_rilevamento` FOREIGN KEY (`idxrow`) REFERENCES `tbl_rilevamento` (`idxrow`)
  922. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  923.  
  924. -- L’esportazione dei dati non era selezionata.
  925.  
  926. -- Dump della struttura di tabella sensorhub.tbl_ccs811
  927. CREATE TABLE IF NOT EXISTS `tbl_ccs811` (
  928.   `idxrow` int(11) NOT NULL,
  929.   `co2` double(10,2) DEFAULT NULL,
  930.   `tvoc` double(10,2) DEFAULT NULL,
  931.   KEY `idxrow` (`idxrow`),
  932.   CONSTRAINT `FK_tbl_mq135_tbl_rilevamento` FOREIGN KEY (`idxrow`) REFERENCES `tbl_rilevamento` (`idxrow`)
  933. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  934.  
  935. -- L’esportazione dei dati non era selezionata.
  936.  
  937. -- Dump della struttura di tabella sensorhub.tbl_hub
  938. CREATE TABLE IF NOT EXISTS `tbl_hub` (
  939.   `idx` int(11) NOT NULL AUTO_INCREMENT,
  940.   `chiave` char(32) NOT NULL DEFAULT '',
  941.   PRIMARY KEY (`idx`)
  942. ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4;
  943.  
  944. -- L’esportazione dei dati non era selezionata.
  945.  
  946. -- Dump della struttura di tabella sensorhub.tbl_ky038
  947. CREATE TABLE IF NOT EXISTS `tbl_ky038` (
  948.   `idxrow` int(11) NOT NULL,
  949.   `noise` double(10,2) DEFAULT NULL,
  950.   KEY `idxrow` (`idxrow`),
  951.   CONSTRAINT `FK_tbl_ky037_tbl_rilevamento` FOREIGN KEY (`idxrow`) REFERENCES `tbl_rilevamento` (`idxrow`)
  952. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  953.  
  954. -- L’esportazione dei dati non era selezionata.
  955.  
  956. -- Dump della struttura di tabella sensorhub.tbl_neo6m
  957. CREATE TABLE IF NOT EXISTS `tbl_neo6m` (
  958.   `idxrow` int(11) NOT NULL,
  959.   `lng` double(10,5) DEFAULT NULL,
  960.   `lat` double(10,5) DEFAULT NULL,
  961.   KEY `idxrow` (`idxrow`),
  962.   CONSTRAINT `FK_tbl_bn220_tbl_rilevamento` FOREIGN KEY (`idxrow`) REFERENCES `tbl_rilevamento` (`idxrow`)
  963. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  964.  
  965. -- L’esportazione dei dati non era selezionata.
  966.  
  967. -- Dump della struttura di tabella sensorhub.tbl_rilevamento
  968. CREATE TABLE IF NOT EXISTS `tbl_rilevamento` (
  969.   `idx` int(11) NOT NULL,
  970.   `idxrow` int(11) NOT NULL AUTO_INCREMENT,
  971.   `datarilevazione` char(10) NOT NULL,
  972.   `orarilevazione` char(8) NOT NULL,
  973.   `giorno` tinyint(4) NOT NULL,
  974.   `mese` tinyint(4) NOT NULL,
  975.   `anno` int(11) NOT NULL DEFAULT 0,
  976.   `settimana` tinyint(4) DEFAULT NULL,
  977.   `nomegiorno` varchar(20) NOT NULL,
  978.   `nomemese` varchar(20) NOT NULL,
  979.   PRIMARY KEY (`idxrow`),
  980.   KEY `giorno` (`giorno`),
  981.   KEY `mese` (`mese`),
  982.   KEY `anno` (`anno`),
  983.   KEY `idx` (`idx`) USING BTREE,
  984.   KEY `settimana` (`settimana`),
  985.   KEY `datarilevazione` (`datarilevazione`) USING BTREE,
  986.   CONSTRAINT `FK_tbl_rilevamento_tbl_hub` FOREIGN KEY (`idx`) REFERENCES `tbl_hub` (`idx`)
  987. ) ENGINE=InnoDB AUTO_INCREMENT=53655 DEFAULT CHARSET=utf8mb4 COMMENT='p';
  988.  
  989. -- L’esportazione dei dati non era selezionata.
  990.  
  991. -- Dump della struttura di tabella sensorhub.tbl_veml6070
  992. CREATE TABLE IF NOT EXISTS `tbl_veml6070` (
  993.   `idxrow` int(11) NOT NULL,
  994.   `uv` double(10,2) DEFAULT NULL,
  995.   KEY `idxrow` (`idxrow`),
  996.   CONSTRAINT `FK_tbl_veml6070_tbl_rilevamento` FOREIGN KEY (`idxrow`) REFERENCES `tbl_rilevamento` (`idxrow`)
  997. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  998.  
  999. -- L’esportazione dei dati non era selezionata.
  1000.  
  1001. -- Dump della struttura di procedura sensorhub.valorizza
  1002. DELIMITER //
  1003. CREATE PROCEDURE `valorizza`(
  1004.     IN `in_idx1` INT
  1005. )
  1006. BEGIN
  1007.  
  1008.  
  1009.    DECLARE counter INT DEFAULT 1;
  1010.    DECLARE maxcounter INT DEFAULT 1;
  1011.  
  1012.     declare in_idx INT;
  1013.     declare temperatura DOUBLE(10,2);
  1014.     declare umidita DOUBLE(10,2);
  1015.     declare pressione DOUBLE(10,2);
  1016.     declare altitudine DOUBLE(10,2);
  1017.     declare uv DOUBLE(10,2);
  1018.     declare co2 DOUBLE(10,2);
  1019.     declare nh3 DOUBLE(10,2);
  1020.     declare nox DOUBLE(10,2);
  1021.     declare alcohol DOUBLE(10,2);
  1022.     declare benzene DOUBLE(10,2);
  1023.     declare smoke DOUBLE(10,2);
  1024.     declare noise DOUBLE(10,2);
  1025.     declare batteria DOUBLE(10,2);
  1026.     declare tensione DOUBLE(10,2);
  1027.     declare lng DOUBLE(10,5);
  1028.     declare lat DOUBLE(10,5);
  1029.  
  1030.     DECLARE mdata1 VARCHAR(50);
  1031.     DECLARE mora1 VARCHAR(50);
  1032.    
  1033.  
  1034.     TRUNCATE TABLE finta;
  1035.    
  1036.     SET @row_number = 0;
  1037.     insert into finta (riga, mdata, mora)
  1038.     SELECT (@row_number:=@row_number + 1) AS row_num,  '2019-01-01 00:00:00' + INTERVAL seq HOUR AS mdata, TIME('2019-01-01 00:00:00' + INTERVAL seq HOUR) AS mdata1 FROM seq_0_to_26303;
  1039.     #SELECT (@row_number:=@row_number + 1) AS row_num,  '2019-01-01 00:00:00' + INTERVAL seq HOUR AS mdata, TIME('2019-01-01 00:00:00' + INTERVAL seq HOUR) AS mdata1 FROM seq_0_to_1000;
  1040.    
  1041.    
  1042.     SELECT MAX(riga) into maxcounter FROM finta;
  1043.  
  1044.  
  1045.  
  1046.    WHILE counter <= maxcounter DO
  1047.  
  1048.         SELECT mdata , mora INTO mdata1, mora1 FROM finta WHERE riga = counter;
  1049.  
  1050.         set in_idx = in_idx1;
  1051.         set temperatura = format(RAND()*100,2);
  1052.         set umidita = format(RAND()*100,2);
  1053.         set pressione = format(RAND()*100,2);
  1054.         set altitudine = format(RAND()*100,2);
  1055.         set uv = format(RAND()*100,2);
  1056.         set co2 = format(RAND()*100,2);
  1057.         set nh3 = format(RAND()*100,2);
  1058.         set nox = format(RAND()*100,2);
  1059.         set alcohol = format(RAND()*100,2);
  1060.         set benzene = format(RAND()*100,2);
  1061.         set smoke = format(RAND()*100,2);
  1062.         set noise = format(RAND()*100,2);
  1063.         set batteria = format(RAND()*100,2);
  1064.         set tensione = format(RAND()*100,2);
  1065.         set lng =  format(RAND()*100,5);
  1066.         set lat = format(RAND()*100,5);
  1067.  
  1068.         #CALL InsertCalendar(dt);
  1069.        
  1070.         CALL `sp_fintorilevamento`(in_idx, temperatura, umidita, pressione, altitudine, uv, co2, nh3, nox, alcohol, benzene, smoke, noise,  batteria, tensione, lng, lat, mdata1, mora1);        
  1071.      
  1072.         SET counter = counter + 1;
  1073.    END WHILE;
  1074.  
  1075.  
  1076.     SELECT 'Carico terminato';
  1077.  
  1078. END//
  1079. DELIMITER ;
  1080.  
  1081. /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
  1082. /*!40014 SET FOREIGN_KEY_CHECKS=IFNULL(@OLD_FOREIGN_KEY_CHECKS, 1) */;
  1083. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  1084. /*!40111 SET SQL_NOTES=IFNULL(@OLD_SQL_NOTES, 1) */;
  1085.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement