Как проверить пустую таблицу в Где Условие - PullRequest
1 голос
/ 19 сентября 2011

Я хочу обновить несколько столбцов таблицы одновременно. И значение для каждого столбца извлекается из нескольких таблиц. Мои таблицы:

Table : Customer
Columns are:
customerCode
kategori
design
designCode
value

Table Name : Customer_kategori 
Columns:

customerCode
kategori

и аналогичные .....

Мой sql запрос:

UPDATE Customer
SET 
    kategori = Customer_kategori.kategori,
    design = Customer_design.design,
    designCode = Customer_designCode.designCode,
    value = Customer_value.value

FROM 
     Customer_kategori,
     Customer_design,
     Customer_designCode,
     Customer_value
WHERE
     Customer_kategori.customerCode = Customer.customerCode
     AND Customer_design.customerCode = Customer.customerCode
     AND Customer_designCode.customerCode = Customer.customerCode
     AND Customer_value.customerCode = Customer.customerCode

Столбцы обновляются, если все таблицы (Customer_kategori, Customer_design, Customer_designCode, Customer_value) содержат значения. Но если таблицы пусты, столбцы не обновляются как Где условие не выполняется.

Я также пытаюсь использовать CASE в состоянии WHERE. Мой код

WHERE
        Customer_kategori.customerCode = CASE WHEN Customer_kategori.customerCoder IS NOT NULL THEN Customer.customerCode END
        AND Customer_design.customerCode = CASE WHEN Customer_design.customerCode  IS NOT NULL THEN  Customer.customerCode  END
        AND Customer_designCode.customerCode = CASE WHEN Customer_designCode.customerCode  IS NOT NULL THEN  Customer.customerCode  END
        AND  AND Customer_value.customerCode =   CASE WHEN Customer_value.customerCode  IS NOT NULL THEN  Customer.customerCode  END

Но это тоже не работает. Я также пытаюсь проверить таблицу, с последующим предложением where,

WHERE
    CASE WHEN (select count(Customer_kategori.customerCode) > 0 from Customer_kategori) THEN Customer_kategori.customerCode = Customer.customerCode END

But no success..

Короче говоря:

  1. Я хочу проверить, являются ли таблицы пустыми в предложении WHERE
  2. И если оно пустое, я просто хочу игнорировать проверку столбцов тех таблиц, которые пусты.

Или, может быть, есть другой лучший способ .... Любое предложение приветствуется ...

Спасибо

1 Ответ

1 голос
/ 19 сентября 2011

Будет ли это работать?

WHERE
(
    Customer_kategori.customerCode = Customer.customerCode
    OR 
    0 = (select count(Customer_kategori.customerCode) from Customer_kategori)
)
AND
(
    ....
)

ОБНОВЛЕНИЕ

Как насчет этого:

UPDATE Customer
SET 
    kategori = Customer_kategori.kategori,
    design = Customer_design.design,
    designCode = Customer_designCode.designCode,
    value = Customer_value.value

FROM 
     Customer left join Customer_kategori on Customer_kategori.customerCode = Customer.customerCode 
     left join Customer_design on Customer_design.customerCode = Customer.customerCode 
     left join Customer_designCode on Customer_designCode.customerCode = Customer.customerCode 
     left join Customer_value on Customer_value.customerCode = Customer.customerCode
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...