En uygun saati bulmak

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

En uygun saati bulmak

Mesaj gönderen sarp_halit »

S. A. arkadaşlar. Şu yapıda bir tablom var:

Kod: Tümünü seç

USE [TIPDATA]
GO
/****** Object:  Table [dbo].[webRANDEVU]    Script Date: 12/27/2010 10:52:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[webRANDEVU](
	[ranID] [int] IDENTITY(1,1) NOT NULL,
	[Servis] [varchar](50) COLLATE Turkish_CI_AS NOT NULL,
	[Tarih] [smalldatetime] NOT NULL,
	[Saat] [char](5) COLLATE Turkish_CI_AS NULL,
	[Hasta] [varchar](11) COLLATE Turkish_CI_AS NULL,
	[iptalkodu] [nvarchar](6) COLLATE Turkish_CI_AS NULL,
	[Doktor] [varchar](5) COLLATE Turkish_CI_AS NULL,
	[ranDURUM] [char](1) COLLATE Turkish_CI_AS NULL,
	[drDURUM] [char](1) COLLATE Turkish_CI_AS NULL CONSTRAINT [DF_webRANDEVU_drDURUM]  DEFAULT ('C'),
	[ranNEREDEN] [char](1) COLLATE Turkish_CI_AS NULL,
	[geldimi] [char](1) COLLATE Turkish_CI_AS NULL,
	[ranEKLEYEN] [nvarchar](50) COLLATE Turkish_CI_AS NULL,
	[ranEKLEME] [datetime] NULL,
	[ranDEGISTIREN] [nvarchar](50) COLLATE Turkish_CI_AS NULL,
	[ranDEGISTIRME] [datetime] NULL,
	[isimsizHASTAADI] [nvarchar](100) COLLATE Turkish_CI_AS NULL,
	[isimsizHASTATELEFON] [nvarchar](50) COLLATE Turkish_CI_AS NULL,
	[KNR] [varchar](6) COLLATE Turkish_CI_AS NULL,
 CONSTRAINT [PK__webRANDEVU__3C4B96B6] PRIMARY KEY CLUSTERED 
(
	[ranID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF
bu tablo sonradan otomasyona entegre bir projede kullanılıyor. Şimdi benim yapmak istediğim şey:
Otomasyona yeni bir kayıt eklenince eklenen dosyanumarasını bu tablodan kontrol edecek eğer kayıt var ise geldimi alanını 'E' olarak değiştirecek eğer kayıt yok ise bu tablonun belirtilen tarihte yine belirtilen servis ve doktorun en uygun saatine o kişiye ait bilgileri yazacak.

senaryoyu şöyle açıklayayım:

siz hastanemize gelen birisiniz. gelmeden evvel internet üzerinden ya da telefon ile randevu aldınız. ben de sizin bilgilerinizi webRANDEVU tablosuna ekledim. sonra siz hastaneye geldiniz ve ben sizi istediğiniz servis ve doktora yönlendirdim. bu sırada arkada bir trigger çalışıyor ve sizin dosya numaranızı benim webRANDEVU tablomdan kontrol ediyor eğer randevu aldıysanız gelidğiniz için geldimi alanını güncelliyor. burada bir sıkıntı yok.

Ama eğer randevu almadan geldiyseniz, bu triggerin sizi geldiğiniz saate en yakın boş bir saate sizi yazması gerekmekte. Siz randevusuz geldiğiniz için 14:30 da giriş yaptırdıysanız ve en yakın boş saat 15:45 ise sizi bu saate yazması gerekmekte.

Yani esas sorun triggerden ziyade o servis ve doktora ait şimdiki zamana en yakın ve boş saati buldurmakta. Bunu nasıl yapabilirim?

Bu arada randevu saatleri doktor çalışma listesine göre bir hafta öncesinden oluşturuluyor ve hastalar boş saatlere update ile ekleniyor.

şimdiden teşekkür ederim.
Fethiye den herkese sevgiler ...
X))@:>
Kullanıcı avatarı
sarp_halit
Üye
Mesajlar: 241
Kayıt: 17 Ara 2003 04:30
Konum: Cennet Fethiye
İletişim:

Re: En uygun saati bulmak

Mesaj gönderen sarp_halit »

Soruyu kendim sordum ama yanıtı da kendim vereyim:)

Kod: Tümünü seç

SELECT     TOP (1) Saat
FROM         webRANDEVU
WHERE     (Servis = @SERVIS) AND (Doktor = @DOKTOR) AND (KNR IS NULL) AND (Tarih = @TARIH) AND (CONVERT(datetime, Saat, 8) >= CONVERT(varchar(8), 
                      GETDATE(), 8))
kolay gelsin.
Fethiye den herkese sevgiler ...
X))@:>
Cevapla