2014-10-13 2 views
-2

Я использую оператор IF для вставки данных в ProductTable (используя это имя в качестве примера), так как я могу открыть инструкцию IF ... ниже вызывает запрос IF, но никогда не достигает значения else, которое было бы, если оно действительно существует в таблице, поэтому здесь приведен пример того, где я на данный момент. моя ошибка лежит в заявлении IF в начале, но я не могу решить, что положить в, чтобы сделать его работус использованием IF ELSE в sql-сервере (что положить в оператор IF)

IF NOT EXISTS(SELECT TOP 1 ProductID FROM ProductTable) 
BEGIN 
    INSERT 
    (ProductName, UnitPrice) 
     SELECT 
     ProductView.ProductName, 
     ProductView.UnitPrice 
    FROM ProductView 
    INNER JOIN ProductTable ON ProductView.ProductID = ProductTable. ProductID 
    WHERE ProductID = (SELECT TOP 1 ProductID FROM ProductTable ORDER BY changedate DESC) 
    AND NOT EXISTS(SELECT 1 FROM ProductTable WHERE ProductView.ProductID = ProductTable.ProductID) 
END 
ELSE 
    INSERT 
    (ProductName, UnitPrice) 
     SELECT 
     ProductView.ProductName, 
     UnitPrice = 0.00 
    FROM ProductView 
    INNER JOIN ProductTable ON ProductView.ProductID = ProductTable. ProductID 
    WHERE ProductID = (SELECT TOP 1 ProductID FROM ProductTable ORDER BY changedate DESC) 
+2

Какие ошибки являются вы получаете? Синтаксис должен быть http://msdn.microsoft.com/en-us/library/ms182717.aspx. Я думаю, вы также можете использовать его как '' '' IF (1 = 1) BEGIN Выберите «If - True» END ELSE BEGIN Выберите «Else - False» END'''' –

+0

, если 1 = 1 работ, отправьте это как ответ ... просто общие синтаксические ошибки, потому что я не знал, как использовать инструкцию IF в SQL Server – Crezzer7

+0

вы просто хотите убедиться, что такая запись существует в таблице? вы можете проверить 'IF (SELECT TOP 1 1 FROM ...) НЕ НУЛЛ' например – DrCopyPaste

ответ

1

Как насчет

SELECT TOP 1 1 FROM Table1 

IF @@ROWCOUNT = 0 
BEGIN 

    -- Do stuff 

END 
+0

обнаружит, существует ли ReferenceID или нет? на основе этого зависит от того, является ли его запрос IF или запрос ELSE, который называется – Crezzer7

+0

@ Crezzer7 где referenceId из вашего ctequery? – DevelopmentIsMyPassion

+0

typo error, его там сейчас – Crezzer7

0

это то, что я был после:

IF NOT EXISTS(SELECT ProductTable.CustomerReference FROM ProductTable) 
BEGIN 
something 
END 
ELSE 
something else 

Мне не нужно было включать TOP 1, а также отсутствовала связь, которая ссылалась на главную таблицу

Смежные вопросы