-- VIEW: Eğer istenirse herhangi bir select sonucu veritabanında dinamik bir görünümde saklanabilir ve
-- bu görünüm üzerinden select yapılarak özellikle join ve group by sorgularının tekrar tekrar yazılmasının önüne geçilir.
use Filmler
-- Film, Yonetmen ve Tur tablolarını inner join ile birleştirelim ve vFilmTurYonetmen adlı view'da sorguyu saklayalım:
-- Aşağıdaki örnekte create view'ın başından itibaren sorgu seçilerek çalıştırılmalıdır
-- çünkü create view sorgusu her zaman ilk satır olarak çalıştırılmalıdır.
create view vFilmTurYonetmen
as
select f.Id as [Film ID], f.adi as [Film Adı], f.yapimyili as [Film Yapım Yılı], f.gisesi as [Film Gişesi],
y.Id as [Yönetmen ID], y.adi + ' ' + y.soyadi as [Yönetmen], y.dogumtarihi as [Yönetmen Doğum Tarihi], t.adi as [Tür]
from Film f inner join Yonetmen y on f.yonetmenId = y.Id
inner join FilmTur ft on f.Id = ft.filmId
inner join Tur t on ft.turId = t.Id
-- vFilmTurYonetmen view'ını oluşturduktan sonra istediğimiz zaman aşağıdaki gibi view içerisindeki
-- sorgu üzerinden sorgulama yapabiliriz. Ayrıca bu view üzerinden where, group by ve order by da kullanabiliriz.
select * from vFilmTurYonetmen where [Film Yapım Yılı] is not null order by [Film Adı]
-- İstenirse bir view'ın sorgusu alter ile değiştirilebilir:
-- Aşağıdaki örnekte sorgudan film id'sini çıkardık.
-- alter view da create view gibi ilk satır olarak çalıştırılmalıdır.
alter view vFilmTurYonetmen
as
select f.adi as [Film Adı], f.yapimyili as [Film Yapım Yılı], f.gisesi as [Film Gişesi],
y.Id as [Yönetmen ID], y.adi + ' ' + y.soyadi as [Yönetmen], y.dogumtarihi as [Yönetmen Doğum Tarihi], t.adi as [Tür]
from Film f inner join Yonetmen y on f.yonetmenId = y.Id
inner join FilmTur ft on f.Id = ft.filmId
inner join Tur t on ft.turId = t.Id
-- İstenirse bir view drop ile silinebilir:
drop view vFilmTurYonetmen