farindra icon

GET RANGKING PROC

farindra | PRO | 09/07/18 11:45:26 PM UTC | 0 ⭐ | 313 👁️ | Never ⏰ | []
MySQL |

990 B

|

None

|

0 👍

/

0 👎

DELIMITER $$
 
USE `saw_hosting`$$
 
DROP PROCEDURE IF EXISTS `penilaian`$$
 
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_rangking`()
    BEGIN
        
        SELECT
          GROUP_CONCAT(DISTINCT
            CONCAT(
              'ifnull(SUM(case when K.nama_kriteria = ''',
              K.nama_kriteria,
              ''' then NA.nilai end),0) AS `',
              K.nama_kriteria, '`'
            )
          ) INTO @sql
        FROM rangking R
            LEFT JOIN alternatif A ON A.id_alternatif = R.id_alternatif
            LEFT JOIN kriteria K ON K.id_kriteria = R.id_kriteria
            LEFT JOIN nilai_atribut NA ON NA.id_nilai = R.id_nilai;
            
        SET @sql = CONCAT('SELECT A.nama_alternatif, ', @sql, ' 
                  FROM rangking R
            LEFT JOIN alternatif A ON A.id_alternatif = R.id_alternatif
            LEFT JOIN kriteria K ON K.id_kriteria = R.id_kriteria
            LEFT JOIN nilai_atribut NA ON NA.id_nilai = R.id_nilai 
                   GROUP BY A.nama_alternatif');
          
          
 
 
        PREPARE stmt FROM @sql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;
 
    END$$
 
DELIMITER ;

Comments