
Mysql bize birçok fonksiyonlar kolaylık sağlamakta.Bunlarda biride php’de kullandığımız switch-case yapısana benzer bir işleyiş gösteren case-when ifadesi.
Örneklemek gerekirse yazılarımız için kullandığım dil alanlarını tuttuğum bir tablom var diyelim.
CREATE TABLE IF NOT EXISTS `page_language` (
`l_id` int(11) NOT NULL AUTO_INCREMENT,
`i_id` int(11) NOT NULL,
`l_content` longtext NOT NULL,
`l_type` enum('c_title','c_content','c_seo','k_title') NOT NULL,
`l_language` enum('tr','en','de','fr') NOT NULL,
PRIMARY KEY (`l_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=54 ;
Görüldüğü gibi l_type olarak tanımladığımız alan c_title,c_content,c_seo,k_title degerlerini alabilmekte.Herhangi bir yazı girildiğinde herbir baslik,icerik ve seo için ayrı alanlar oluşmakta.
(10, 2, 'ALAN ICERIK', 'c_content', 'tr'), (11, 2, 'ALAN SEO', 'c_seo', 'tr'), (12, 3, 'ALAN BASLIk', 'c_title', 'tr'),
Basit bir şekilde bu alanları güncellemek istersek;
UPDATE page_language SET l_content = CASE l_type WHEN 'c_title' THEN 'Yeni Baslik' WHEN 'c_content' THEN 'Yeni icerik' WHEN 'c_seo' THEN 'yeni-baslik' ELSE l_content END WHERE i_id='2' and l_language='tr'
Copyright © Hakan ERSU.All rights reserved