पर काम नहीं कर रहा है मेरे पास तीन टेबल हैं।अपॉइंटमेंट स्लॉट
तालिका 1. (बुकिंग)
CREATE TABLE [dbo].[Booking](
[Booking_Serno] [int] IDENTITY(1,1) NOT NULL,
[Dt] [datetime] NULL,
[start] [nvarchar](50) NULL,
[todate] [nvarchar](50) NULL,
[Service_Id] [int] NULL
) ON [PRIMARY]
INSERT [dbo].[Booking] ([Booking_Serno], [Dt], [start], [todate], [Service_Id]) VALUES (1, CAST(0x0000A6DA00000000 AS DateTime), N'9:30 AM', N'10:00 AM', 1)
GO
तालिका 2. (सेवा)
CREATE TABLE [dbo].[Service](
[Service_Serno] [int] IDENTITY(1,1) NOT NULL,
[Service_Duration] [int] NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Service] ON
INSERT [dbo].[Service] ([Service_Serno], [Service_Duration]) VALUES (1, 30)
तालिका 3 (नियम)
CREATE TABLE [dbo].[Rules](
[Rule_Serno] [int] IDENTITY(1,1) NOT NULL,
[Start_Dt] [varchar](50) NULL,
[End_Dt] [varchar](50) NULL,
[from_dt] [varchar](50) NULL,
[to_dt] [varchar](50) NULL,
[Service_Id] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
SET IDENTITY_INSERT [dbo].[Rules] ON
INSERT [dbo].[Rules] ([Rule_Serno], [Start_Dt], [End_Dt], [from_dt], [to_dt], [Service_Id]) VALUES (1, N'2016-07-02', N'2016-07-13', N'07:00', N'17:00', 1)
मैं संग्रहीत प्रक्रिया चला रहा हूं। यह मुझे वांछित परिणाम प्राप्त करता है लेकिन फिर मैं अंतराल को बदलकर एक समय बुक करने की कोशिश कर रहा हूं, स्लॉट बुक किए जाने पर भी स्लॉट खाली दिखाई देता है। पूर्व। अगर मैं 60 मिनट के लिए स्लॉट सेट कर रहा हूं और 7: 00-8: 00 से स्लॉट बुक करता हूं तो यह बुक (xxx) दिखाता है लेकिन जब मैं अंतराल को 30 से 7: 00-8: 00 में बदल जाता हूं। इसे वास्तव में 7: 00-7: 30 और 7: 00-8: 00 अनुपलब्ध होना चाहिए। संग्रहित प्रक्रिया
डीटी: -12/12/2016; ServiceId: -1
CREATE PROCEDURE [dbo].[RealGetFollowUp] @Dt varchar(50), @ServiceId int
AS
--declare @starttime datetime = '2015-10-28 12:00', @endtime datetime = '2015-10-28 14:00'
DECLARE @starttime varchar(50),
@endtime varchar(50),
@interval int
SELECT
@starttime = Rules.from_dt,
@endtime = Rules.to_dt,
@interval = Service.Service_Duration
FROM Service
INNER JOIN Rules
ON Service.Service_Serno = Rules.Service_Id
WHERE Service.Service_Serno = @ServiceId
--SELECT * INTO #tmp FROM d;
DECLARE @slots int
SELECT
@slots = DATEDIFF(MINUTE, @starttime, @endtime)/@interval
SELECT TOP (@slots)
N = IDENTITY(int, 1, 1) INTO #Numbers
FROM master.dbo.syscolumns a
CROSS JOIN master.dbo.syscolumns b;
SELECT
DATEADD(MINUTE, ((n - 1) * @interval), @starttime) AS start,
DATEADD(MINUTE, (n * @interval), @starttime) AS todate INTO #slots
FROM #numbers
SELECT
@Dt AS 'Date',
LEFT(CONVERT(varchar, s.start, 108), 10) AS Start,
LEFT(CONVERT(varchar, s.todate, 108), 10) AS 'End',
CASE
WHEN b.start IS NULL THEN '-'
ELSE 'xx'
END AS Status
FROM [#slots] AS s
LEFT JOIN Booking AS b
ON s.start = b.start
AND s.todate = b.todate
AND b.Dt = @Dt
DROP TABLE #numbers, #slots
GO
मैं अगर वहाँ एक स्लॉट बुकिंग तालिका में बुक किया गया और यहां तक कि अगर मैं सेवा तालिका में अंतराल बदलने के लिए, बुकिंग तालिका में आरक्षित स्लॉट के रूप में दिखाया जाना चाहिए है जांच करने की आवश्यकता बुक।
कैसे आप सेवा तालिका में अंतराल बदल रहे हैं? और स्लॉट फिर से उपलब्ध होने के लिए क्या बुक करता है? – NickyvV
@NickyvV मैं सेवा तालिका से ** सेवा अवधि ** से अंतराल बदल रहा हूं। ** बुकिंग ** तालिका में समय स्लॉट डालने पर वे अनुपलब्ध 'xxx' बन जाते हैं और यदि आप इसे ** बुकिंग ** से हटाते हैं तो स्लॉट उपलब्ध हो जाते हैं। – Fahad
लेकिन अंतराल को बदलने से संबंधित बुकिंग से कैसे हट रहा है? क्या यह मैन्युअल रूप से किया जाता है? – NickyvV