Group Concat veya Concat Sorgularında String yerine Json çıktı nasıl alabilirsiniz?
CONCAT : CONCAT() fonksiyonu mysql fieldlarını birleştirmeye yarar. Aşağıda ki örnekte users tablosunda kullanıcının adının ve soyadını ayrı ayrı fieldlarda tutulmakta ve CONCAT() foksiyonu ile birleştirme yapılarak çekilmektedir.
mysql> SELECT CONCAT(user_name, ' ', user_surname) as userFullName FROM users;
+-----------------------------------------+ | concat(user_name, ',', user_surname) | +-----------------------------------------+ | Lary Page | | Linus Torvalds | +-----------------------------------------+ 2 row in set (0.00 sec)
GROUP_CONCAT : GROUP_CONCAT fonksiyonu ile birden fazla satırı SEPARATOR ile belirleyeceğimiz özel karakter ile birleştirme işlemini yapar.
mysql> SELECT GROUP_CONCAT(user_name, ' ', user_surname SEPARATOR '|') FROM users;
+-------------------------------------------------------------+ | GROUP_CONCAT(user_name, ' ', user_surname SEPARATOR '|') | +-------------------------------------------------------------+ | Lary Page|Linus Torvalds | +-------------------------------------------------------------+ 1 row in set (0.00 sec)
GROUP_CONCAT() ve CONCAT() çıktılarını json haline getirerek almak özellikle GROUP_CONCAT() çıktılarında bizim için çok fazla kolaylık sağlayacaktır. Aşağıda JSON çıktısı alabileceğimiz basit bir örnek yer almaktadır. Size bu örnekleri ihtiyaç halinde geliştirerek daha kompleks sorgularınızı yazabilir ve projelerinizde kullanabilirsiniz.
mysql> SELECT CONCAT("[",GROUP_CONCAT(CONCAT('{name:"', user_name, '", surname:"', user_surnamen,'"}')), "]") AS usersJson FROM users;
+------------------------------------------------------------------------------------------------------------------------+ | usersJson | +------------------------------------------------------------------------------------------------------------------------+ | [{name:"Lary", surname:"Page"},{name:"Linus", surname:"Torvalds"}] | +------------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)











