DELIMITER $$
USE `test`$$
DROP PROCEDURE IF EXISTS `getKriteria`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `getKriteria`()
BEGIN
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'ifnull(SUM(case when K.nama_kriteria = ''',
K.nama_kriteria,
''' then R.nilai_rangking 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;
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
GROUP BY A.nama_alternatif');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
Comments