Łączenie dwóch zapytań IF NOT EXISTS

0

Witam tak jak w tytule, chciałbym zrobić podwójny warunek przed innym zapytaniem.

IF NOT EXISTS (SELECT 1 FROM Zgloszenie_Zakonczenie WHERE id_zgloszenie_zakonczenie = @id_zgloszenie AND id_nast_zakonczenie IS NULL AND id_usun_zakonczenie IS NULL)
-- AND (SELECT 1 FROM Zgloszenie WHERE id_zgloszenie = @id_zgloszenie AND id_nast_zgloszenie IS NULL AND id_usun_zgloszenie IS NULL)

            INSERT INTO Zgloszenie (
                id_utwo_zgloszenie, 
                data_utwo_zgloszenie,
                kod_kontrahent_zgloszenie,
                nazwa_kontrahent_zgloszenie, 
                adres_kontrahetn_zgloszenie,     
                tytul_zgloszenie,
                opis_zgloszenie,
                data_zgloszenie,
                czas_zgloszenie, 
                priorytet_zgloszenie, 
                ping_zgloszenie,
                telefon_kontrahent_zgloszenie) VALUES (
                @id_utwo_zgloszenie, 
                @data_utwo_zgloszenie,
                @kod_kontrahent_zgloszenie,
                @nazwa_kontrahent_zgloszenie, 
                @adres_kontrahetn_zgloszenie,     
                @tytul_zgloszenie,
                @opis_zgloszenie,
                @data_zgloszenie,
                @czas_zgloszenie, 
                @priorytet_zgloszenie, 
                @ping_zgloszenie,
                @telefon_kontrahent_zgloszenie
                ) 

Czy jest to wykonalne?

0

Zamiast robić podwójny IF, zrób jedno zapytanie:

 IF NOT EXISTS 
(SELECT 'x' as Test FROM Zgloszenie_Zakonczenie WHERE id_zgloszenie_zakonczenie = @id_zgloszenie AND id_nast_zakonczenie IS NULL AND id_usun_zakonczenie IS NULL
UNION 
SELECT 'x' as Test FROM Zgloszenie WHERE id_zgloszenie = @id_zgloszenie AND id_nast_zgloszenie IS NULL AND id_usun_zgloszenie IS NULL)
0

A ja zapytam, a dlaczego niby nie jest? Oczywiście zabrakło informacji o jaką bazę chodzi, więc odpowiedź może być tak lub nie.
Jeśli jest to MS SQL Server powinno zadziałać, w if możesz podać wiele warunków połączonych operatorami logicznymi.

0

Korzystam z MS SQL, ale niestety łączenie operatorem powoduje błąd.
Chciałem poprosić jeszcze o pomoc w napisaniu funkcji przeliczającej data,
w parametrach dostaję (DateTime dt, NVARCHAR(50) czas), gdzie zmienna czas to:
"15 min." lub "1 godz." lub "4 godz. 35 min.", dalej próbowałem CharIndex, sprawdzić czy jest napis godz,
jeżeli tak to do do dt dodaję odpowiednią ilość godzin, dalej jeżeli jest min to do dt dodaję odpowiednią liczbę minut,
a efekt końcowy wyglądać tak:
15:30 - 16:30

0
USE [Terminarz]
GO
/****** Object:  UserDefinedFunction [dbo].[DataPlusCzas]    Script Date: 11/08/2011 11:10:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER FUNCTION [dbo].[DataPlusCzas] (@data DATETIME, @czas NVARCHAR(MAX))
RETURNS NVARCHAR(MAX)
AS
BEGIN
DECLARE @godz NVARCHAR(50), @min NVARCHAR(50), @czasAdd NVARCHAR(50), @wynik NVARCHAR(50)
DECLARE @pos INT, @pos1 INT
DECLARE @dataAdd DATETIME

SET @pos = 0
SET @pos1 = 0
SET @min = 0
SET @godz = 0

SET @pos = CHARINDEX(' godz.', @czas)
IF(@pos > 0)
    SET @godz = SUBSTRING(@czas, 0, @pos)

IF(CHARINDEX(' min.', @czas) > 0 AND @godz > 0)
    SET @min = SUBSTRING(@czas, 1 + 8, 2)   
IF(CHARINDEX(' min.', @czas) > 0 AND @godz < 0)
    SET @min = SUBSTRING(@czas, 0, CHARINDEX(' min.', @czas))

SET @dataAdd = DATEADD(minute, CONVERT(INT, @min), @data)
SET @dataAdd = DATEADD(hour, CONVERT(INT, @godz), @dataAdd)

SET @czasAdd = CONVERT(VARCHAR(5),@dataAdd, 108)

SET @wynik = CONVERT(VARCHAR(5), @data, 108) + ' - ' +  CONVERT(VARCHAR(5), @czasAdd, 108)

RETURN(@wynik)
END

Brakuje mi tylko sprawdzenia ilości znaków w zmiennej @godz. Jak mogę to sprawdzić?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0