Как показать все записи из одной таблицы для каждой полуотносимой записи в другой? - PullRequest
0 голосов
/ 14 февраля 2019

Эту проблему чрезвычайно трудно объяснить, и я даже не знал, как правильно ее озаглавить, поэтому заранее извиняюсь за это.

У меня есть следующие продукты:

Продукт Код товараНаименование товара

В моей базе данных есть таблица показателей и таблица продуктов.Карта тарифов может называться «Клиенты уровня 1», и соответствующие записи RatecardProduct будут ценами на продукты для этой конкретной карты тарифов.Он может содержать цены только на несколько продуктов, а не на все.

Карта тарифов RatecardIdRatecardName

Карточка продукта RatecardProductIdRatecardIdProductId UnitPrice

Проблема в том, что мне нужно создать представление, отображающее все продукты для всех карт тарифов.Если в таблице тарифов / комбинаций продуктов нет соответствующей цены за единицу в моей таблице показателей, она должна показывать NULL или 0.

Представьте, что у меня 10 продуктов и 4 карты тарифов;представление будет содержать 40 записей, даже если таблица RatecardProduct была полностью пустой

Причина, по которой мне нужно это сделать, заключается в том, что я заполняю gridview при просмотре карты оценок, и я не хочу делать раундпоездка для каждого ряда, чтобы определить, есть ли соответствующая цена.

Заранее большое спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Генерация всех строк.Затем используйте left join для ввода данных:

select p.*, r.*, coalesce(rp.unitprice, 0) as unitprice
from products p cross join
     ratecards r left join
     ratecardproduct rp
     on rp.productid = p.productid and rp.ratecardid = r.ratecardid;

Или не используйте coalesce(), если хотите NULL.

...