Bunu cursor ile kolayca halledersin.Randevunu bulduktan sonra otede ve geride olanlara bakıp aradaki farkı ve zamanı alabilirsin.Bu trarz bir calısmam vardı kodlarını aşagıda MSSQL için ama oracle benzer olmalı
DECLARE @ID int DECLARE @Adr nchar(100) DECLARE @Ys int
DECLARE Sec CURSOR SCROLL FOR SELECT ID,Adres,Yaş FROM Kisi
OPEN Sec
FETCH NEXT FROM Sec INTO @ID,@Adr,@Ys
WHILE (@@FETCH_STATUS=0) BEGIN BEGIN TRY IF(@Adr LIKE '%555%') BEGIN PRINT @Adr UPDATE Kisi SET Yaş=0 WHERE ID=@ID
FETCH PRIOR FROM Sec INTO @ID,@Adr,@Ys UPDATE Kisi SET Yaş=0 WHERE ID=@ID
FETCH RELATIVE 2 FROM Sec INTO @ID,@Adr,@Ys UPDATE Kisi SET Yaş=0 WHERE ID=@ID
END FETCH NEXT FROM Sec INTO @ID,@Adr,@Ys END TRY BEGIN CATCH PRINT 'İŞLEM SONU' END CATCH END < Resime gitmek için tıklayın >
cursor ile yaparsın bunu, mantığın şu olucak,randevuyu görünce bir ilerisinde ve bir gerisindeli randevuya bakıcaksın benimdekinde update var sen sadece degerlerleri alıcan hepsini gecici bir tabloya insert edip ordan bilgileri cekersin yapamıyorum dersen ufak bir ücret karsılıgı yapıp veririm sana.
benden istenen, randevu tablosunda bulunan randevu tarihlerini, 08:00 ve 17:00 saatleri arasından çıkararak
tüm boş zamanları dakika cinsinden getirmek ve hangi saatler arasında randevu verilebileceğini görüntülemek.
(örnek vermem gerekirse saat 9.30 da 10 dk lık bir randevum olsun diğer randevum da saat 10.45 te yine 10 dk lık olsun
bana bu sorgunun saat 08.00 ile 9.30 arasındaki başlangıç, bitiş zamanı ve arada kalan dakikasını,
09.40 ile 10.45 arasındaki başlangıç, bitiş zamanı ve arada kalan dakikasını,
ve 10.55 ten 17.00 a kadar olan süreyi vermesi gerekiyor.)
kolonlar
randevuBaslangicTarihi , randevuBitisTarihi
11.03.2013 09:30:00 , 11.03.2013 09:40:00
11.03.2013 10:45:00 , 11.03.2013 10:55:00
istediğim dönüş tipi:
aralik , dakika
08:00:00 - 09:30:00 , 90
09:40:00 - 10:45:00 , 65
10:55:00 - 17:00:00 , 365
select (t.bitis - t.baslangic) * 1440 as aralik from KOD_RANDEVU_SAAT_PROFIL_DETAY t
where t.baslangic between to_date('11.03.2011 08:00:00', 'dd-mm-yyyy hh24:mi:ss')
and TO_DATE('11.03.2011 17:00:00', 'dd-mm-yyyy hh24:mi:ss') order by t.baslangic asc
bu sorgu bana var olan kayıtların tarih farkını getiriyor ama istediğim bu değil dışında kalan aralıklar.
not exists ile çözmeye çalıştım ama ya olmuyor yada ben beceremedim.
bana bir çözüm yolu üretirseniz çok sevinirim.
şimdiden yardımlarınız için çok teşekkür ederim.
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi alix12 -- 16 Aralık 2013; 14:22:08 >