Tüm Platformlar için Hızlı Uygulama Geliştirme Kitap Yayın Süreci
Kitap gözden geçirilmek üzere BTG (Bilgi ve Teknoloji Grubu) 'na gönderildi. 05.10.2018-14:10
BTG (Bilgi ve Teknoloji Grubu) tarafından iki sayfalık bir reklam tasarımı bekleniyor. 08.10.2018 - 15:30
Kitap basım talebi değerlendirilmek üzere matbaaya bildirildi. Matbaadan basım süreci hakkında bilgi bekleniyor. 15.10.2018 - 15:34
Kitap 1.000 adet basım talebi ile matbaaya gönderildi. 16.10.2018 - 16:50

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MySQL Function Kullanımı
#1
Merhabalar,
Uygulamamda bir fonksiyona ihtiyacım oldu, yapmışken buraya da küçük bir örnek vermek istedim.

Delphide kullandığımız fonksiyonlar ile MySQL çerçevesinde aynı mantık aslında, bir veya birden fazla parametre alır işler ve değer döndürür.

Kullanım alanına kendi uygulamamdan basit bir örnek ile başlayalım,
uygulamam içerisinde, listemde dualar var ve dualar okudukça insanlar beğenme butonuna tıklıyor, databasede yer kaplamamak ve karışıklığı önlemek adına, tablomda beğenen kullanıcıların, kullanıcı adı değil kullanıcı idlerini tutarım.
Aşağıdaki gibi,
0lblYD.jpg

Ama uygulama içerisinde, örneğin 1 nolu duamı beğenenlerin listesini çektiğimde anlamsız user_idler dönecek ve eğer fonksiyon kullanmaz isem, uygulama içerisinde tek tek her id'nin kullanıcı adını user tabloma delphi ile bağlanıp almam gerekecek, 

Çok ürkütücü ...   Cry 

Neyse ki tamda bu durumda imdadımıza fonksiyon yetişiyor.
Söz dizimimiz aşağıdaki gibidir.
CREATE FUNCTION `idtousername`(id_no INTEGER(11))
   RETURNS varchar(50) CHARSET latin1
BEGIN
DECLARE UNAME VARCHAR(20);
select username INTO UNAME from user where id=id_no LIMIT 1;
RETURN UNAME;
END;

Kısaca anlatayım,
CREATE FUNCTION `idtousername`(id_no INTEGER(11))
  RETURNS varchar(50) CHARSET latin1

idtousername adında bir fonksiyon oluşturduk, alacağı parametre adı id_no ve integer değer alacak, geri dönüşü ise varchar(50) kısaca string olacaktır.

BEGIN  // fonsiyonumuz başlıyor
DECLARE UNAME VARCHAR(50);  // UNAME isminde bir string değişken oluşturdum.
select username INTO UNAME from user where id=id_no;  // user tabloma gittim ve fonksiyonuma gelen id_no ya ait userimin username'ini aldım UNAME değişkenime atadım.
RETURN UNAME; ve UNAME değişkenimi fonksiyonumda geri döndürdüm.
END; //fonksiyonum sona erdi,

Kullanımı ve sonuç ise bu şekilde...
SELECT duaid,idtousername(user_id) as username FROM like_dua

o0njmm.jpg


MySQL function kullanımından olabildiğince basit ve anlaşılır bir biçimde anlatmaya çalıştım umarım anlaşılır olmuştur. Projelerinizde database kullanmanız gerektiğinde bence functionlara ve procedurelere mutlaka ihtiyacınız olacaktır. Önem arz etmektedir.

Kalın sağlıcakla...
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
Paylaşım için teşekkürler.

Not: Belirtmekte fayda var, bu tarz bir iş için VIEW kullanılabilir.
There's no place like 127.0.0.1
WWW
Cevapla
#3
(19-11-2016, Saat: 19:58)SimaWB Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlPaylaşım için teşekkürler.

Not: Belirtmekte fayda var, bu tarz bir iş için VIEW kullanılabilir.

Yavaş yavaş geleceğiz oraya şimdilik basit tablolar diye gerek duymadım ama aklımda, view tablo yapmayı düşünüyorum...
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
yada kısaca;
SELECT D.duaid, U.uname
FROM like_dua D
LEFT JOIN user U ON U.id=D.user_id
yazabilirsiniz.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#5
(21-11-2016, Saat: 11:14)esistem Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Olyada kısaca;
SELECT D.duaid, U.uname
FROM like_dua D
LEFT JOIN user U ON U.id=D.user_id
yazabilirsiniz.

Maksat fonksiyonu öğrenmek Wink
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#6
SELECT cümlesinin sonuna LIMIT 1 şeklinde bir ekleme yaparsanız daha hızlı çalışır
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla
#7
(15-08-2017, Saat: 08:21)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSELECT cümlesinin sonuna LIMIT 1 şeklinde bir ekleme yaparsanız daha hızlı çalışır

Bunu neden eklememişim diye sorguladım kendimi şu an, hatırlatma için teşekkürler güncelliyorum
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySQL vs MariaDB. Hangisi tercih edilmeli? uparlayan 4 480 18-06-2018, Saat: 15:14
Son Yorum: vkamadan
  MySQL - SQL Tablo Kontrolü Halil Han Badem 3 294 26-05-2018, Saat: 13:11
Son Yorum: Halil Han Badem
  Soru : MySQL Veritabanı' nda Explode İşlemi Nasıl Yapılır mad85 9 702 22-03-2018, Saat: 21:48
Son Yorum: uparlayan
  MySQL SP recover.. mcuyan 6 503 06-01-2018, Saat: 17:07
Son Yorum: mcuyan
Question MySQL ve MsSQL Md5 Fonksiyon Sonuçları Eşleşmiyor frmman 6 589 22-12-2017, Saat: 09:25
Son Yorum: frmman



Konuyu Okuyanlar: 1 Ziyaretçi