В поисках некоторых указаний о том, какие варианты мне следует рассмотреть для решения следующей проблемы создания оператора select (SQL SERVER) на основе условий:
ПРИМЕЧАНИЕ: упрощение актуальной проблемы
Если у меня есть две таблицы, каждая с полем, которое мне нужно использовать
ПРИМЕР:
CUSTOMER.CUSTOMER_ID
PRODUCT.PRODUCT_ID
У меня есть еще 2 таблицы, в которых указаны специальные цены на товары на основе этих двух полей.
Пример:
CUSTOMER_PRICING
***************************************
* CUSTOMER_ID * PRODUCT_ID * PRICE *
* *
* ABC * 100 * 5.00 *
***************************************
MARKET_PRICING
***************************************
* CUSTOMER_ID * PRODUCT_ID * PRICE *
* *
* ACME * 200 * 7.00 *
***************************************
Для каждого CUSTOMER.CUSTOMER_ID и PRODUCT.PRODUCT_ID я хочу присоединиться к записям CUSTOMER_PRICING и MARKET_PRICING, используя внешнее левое соединение. Но условия только если
А) поле ЦЕНА не является нулевым
B) и если CUSTOMER_ID / PRODUCT_ID существует в обоих, я хочу получить запись только из CUSTOMER_PRICE
Что-то вроде:
IF EXISTS (SELECT C.CUSTOMER_ID, P.PRODUCT_ID FROM CUSTOMER C, PRODUCT P
WHERE C.CUSTOMER_ID, P.PRODUCT_ID IN
(SELECT PRICE FROM CUSTOMER_PRICE WHERE PRICE IS NOT NULL))
ELSE IF EXISTS
(SELECT C.CUSTOMER_ID, P.PRODUCT_ID FROM CUSTOMER C, PRODUCT P
WHERE C.CUSTOMER_ID, P.PRODUCT_ID IN
(SELECT PRICE FROM MARKET_PRICE WHERE PRICE IS NOT NULL))
***, тогда как-нибудь объедините эти результаты .....
Есть предложения?