Я использую SQLServer 2005. У меня есть форма, где пользователь выбирает элементы «Дополнения». Они могут быть в конкретном плане, который платит за эти дополнения цену, отличную от розничной.
У меня есть две таблицы:
Аддоны
ID--------AddonName--------RetailCost
6---------Red Tint---------85
7---------Green Tint-------75
Addons_Override (эта таблица переопределяет розничную стоимость предмета со специальной стоимостью для этого PlanID)
AddonID--------PlanID--------Cost
6--------------10------------50
6--------------11------------25
Пользователь выбирает красный оттенок (ID = 6) и зеленый оттенок (ID = 7) и находится в PlanID = 10. Я хочу показать выбранные предметы Аддона с соответствующей стоимостью.
Хотите этот результат:
ID--------AddonName--------RetailCost--------Cost--------PlanID
6---------Red Tint---------85----------------50----------10
7---------Green Tint-------75----------------75----------NULL
Не этот результат:
ID--------AddonName--------RetailCost--------Cost--------PlanID
6---------Red Tint---------85----------------50----------10
6---------Red Tint---------85----------------25----------11
7---------Green Tint-------75----------------75----------NULL
Текущий SQL
SELECT
DISTINCT t1.ID,
t1.RetailCost,
Cost=case when t2.VisionPlanID=10 then t2.Cost else t1.RetailCost end,
t2.PlanID
FROM
Addons t1
LEFT OUTER JOIN
Addons_Override t2
ON
t1.ID=t2.AddonID
WHERE (VisionPlanID=10 AND ID=6) or ID=7
Проблема в том, что я не могу написать оператор select подобным образом, поскольку я не знаю, какие из них находятся в таблице Addons_Override. Какой оператор select будет работать, чтобы дать мне результат, который я хочу выше?
Пожалуйста, помогите!