Использование View для объединения таблиц

Существует 2 таблицы к примеру продавцы(seller) и покупатели(buyer) у них есть одинаковые поля id, name, last_order_day продавцы содержат еще поля type и limit, покупатели содержат поле sum.

Задача: Нужно вывести всех покупателей и продавцов отсортированных по дате их последней операции для продавцов показать их лимит(limit), а для покупателей сумму(sum).

На примете пока только один вариант это создать View с запросом и уже через View делать сортировку и дополнительные условия на выборку

SELECT seller.id, seller.name, seller.last_order_day, seller.limit, seller.type, null as sum
FROM seller
WHERE seller.enable
UNION
SELECT buyer.id, buyer.name, buyer.last_order_day, null as limit, 'buyer' as type, buyer.sum
FROM buyer
WHERE buyer.enable

1. Насколько такой вариант будет ресурсоемким?
2. Возможно есть другие варианты?

P.S. Таблицы намного сложнее и объединить их не вариант

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Задача какая-то непонятная.

Задача какая-то непонятная. Показ в одном месте разных сущностей с разными полями.
Обычно такое не требуется, так что придётся и извращаться по полной программе.
Вариант будет ресурсоёмким, а куда деваться?

> P.S. Таблицы намного сложнее и объединить их не вариант
А я бы именно пошёл по пути реконструкции структуры БД, если такое задание стоит.
В конце концов можно в общей таблице либо сделать поле who где ставить для продавцов одно значение, для покупателей другое. Или по значению NULL в поле limit определять покупателя.
Возможно даже лучшим делом будет оставить таблицу в которой есть общие поля для покупателей и продавцов, а разные поля вынести в отдельные таблицы, связав их через id.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023