Sezgiler WP Theme

Koyu Açık
Delphi’de SQL Kullanımı – 9 – Delphi ADO Veritabanı Bağlantısı

Altsorgular(SUBQUERY)

Subquery, bir sorgu oluşturulurken, bu sorguya ait kriterleri başka bir sorgu belirleme durumudur. Kısaca sonucu bilinmeyen koşullar olduğunda bu yöntem kullanılır.

Yazılımı:

SELECT …..

FROM ……

WHERE kolon=( SELECT …

FROM ….

WHERE ….)

Select cümlesi parantes içinde tanımlanır. = koşulu kondu ise select cümlesi tek değer döndürmek zorundadır. Eğer birden fazla değer için koşul konulması gerekirse ” in, not in ” kelimesi kullanılır. Tek kayıt döndüğünde = yerine >,>=, <, <=, <> kontrol ifadeleride kullanabiliriz. Bir önemli nokta da koşula eşitlenecek değer 2. Select cümlesi içindeki kolon değerine eş olmalıdır. Yani tipleri eşit olmalıdır.

Subquery sorgulama tekniğinde order by kullanılamaz.

Having grup kotulu içinde select cümlesi kullanabiliriz.

Örneğin;

  1. sorgu : Kazım’ ın departman numarası kaçtır?
  2. SELECT dept_id,name

FROM Personel

WHERE name=’Kazım’

  1. sorgu : Departman numarası 38 olan kişilerin listesinden adı kazım olan var mı incele?
  2. SELECT dept_id,name

FROM Personel

WHERE dept_id=38

  1. sorgu : Bu iki sorgunun birleşimi istenirse, yani departmanı 38 olan kazım adlı personel bigisi ?

    SELECT dept_id,name

FROM Personel

WHERE dept_id=( SELECT dept_id

        FROM Personel

WHERE name=’Kazım’)

Çalışma Anında Sorguya Dışarıdan Değer Alma

Bir sorgu oluşturulurken bazen bazı alanların değerleri değişkendir. Bu yüzden sorguya dışarıdan değer girilmesi ve bu değere göre bir sorgu oluşturulması gerekir. Bunun için anahtar kelimenin başına ‘ & ‘ karakteri getirilir.

Örneğin istenilen departmankoduna göre personelin adı ve soyadı listeleyelim;

SELECT ad,soyad

FROM Personel

WHERE Dept_id = &Departman_kodu

Ekran:

Departman_kodu için değer gir: 38

eski 1: select ad,soyad from Personel where Dept_id = &Departman_kodu

yeni 1: select ad,soyad from Personel where Dept_id = 38

Eğer sorgu yazılımı sorunlu ise bu giriş yapıldıktan sonra anlaşılır ve kesinlikle girilen değer kolon tipine eş olmalıdır. Örneğin ‘&anahtar_kelime’ şeklinde tırnak arasında belirtilmişse giriş olarak sadece text değer girilir. Ama &anahtar_kelime tırnak içinde belirtilmemişse giriş yapılırken tırnak içinde giriş yapılmalıdır. Birden fazla &anahtar_kelime tanımlanırsa sırayla sorgu sorulur ve tüm değerler girildikten sonra sorgu oluşturulur. Eğer where koşulunda &anahtar_kelime’si kullanılmışsa giriş yapılırken matematiksel koşul şeklinde giriş yapabiliriz.

Eğer anahtar kelimenin başına ‘ && ‘ konulursa sorgu sırasında sadece bir kerelik sorgu sorulur. Bundan sonra anahtar kelimenin değeri ilk girilen değer olarak geçerlidir.

DEFINE değişken=değer : Belirtilen değişkene karakter atanır.

ACCEPT : Kullanıcıya açıklayıcı mesaj verilerek istenilen tipte veri girişi yapılması sağlanır. & işaretiyle yapılan işlemin daha kontrollu şeklidir.

Yazılımı :

ACCEPT değişken [datatipi] [ FORMAT ] [PROMPT text] [HIDE]

Değişken  Giriş yapılacak verinin değerinin tutulduğu anahtar kelimedir.

Datatipi  Girişi yapılacak verinin veri tipidir.

FORMAT  Giriş yapılacak verinin giriş düzeni sağlanır. Örneğin rakam için 9999 (4 haneli sayı) , karakter için A10 (10 karakterlik yer) .

PROMPT  Kullanıcıya gireceği değer için açıklayıcı mesaj görüntüler.

HIDE  Giriş yapılırken verinin görüntülernmeden giriş yapılması sağlanır. Örneğin şifre girişlerinde.

Örnekler;

ACCEPT adi PROMPT ‘Adınızı giriniz:’

ACCEPT yas NUMBER PROMPT ‘Yaşınızı giriniz:’

ACCEPT yil NUMBER FORMAT 9999 PROMPT ‘Bulunduğunuz yılı giriniz:’

ACCEPT sifre CHAR PROMPT ‘Tifrenizi giriniz:’ HIDE

Örnek: Personel adına göre personel bilgilerini gösterelim. Bunun için bir .sql uzantılı dosyada yazalım. Bu programı start ile çalıştıralım.

Ornek.sql

SET ECHO OFF

ACCEPT adi PROMPT ‘ Adınızı Giriniz:’

SELECT * FROM Personel

WHERE UPPER(Personel.ad) LIKE UPPER(‘&adi’)

/

SET ECHO ON

“Start Ornek.sql “ yazılarak sql çalıştırılır.

Bazen parametre girişlerini daha başlangıçta vermek istenirse;

Start Dosya_adı Parametreler,…

Örneğin yukarıdaki örnek için Start Ornek Kazım

İçerik için yorum bulunamadı.
Cevap yaz: