Моя проблема заключается в следующем: скажем, у вас есть три разные таблицы (продукты, счета и возвраты)
| ProductId | Name |
=====================
| 1 | Car |
| BillId | ProductId | Amount |
=================================
| 1 | 1 | 100$ |
| 2 | 1 | 200$ |
| ReturnId | ProductId | Amount |
===================================
| 1 | 1 | 50$ |
Как будет выглядеть ОДИН запрос, чтобы получить следующий вывод:
| Product-ID | Name | Type | Amount |
=====================================
| 1 | Car | Bill | 100$ |
| 1 | Car | Bill | 200$ |
| 1 | Car | Ret | 50$ |
Я пытался со всеми видами Joins, и почему-то я не могу понять это.Что я делаю неправильно?Самое близкое решение, которое я нашел до сих пор, было примерно таким:
SELECT p.*,
(CASE
WHEN b.Amount IS NOT NULL THEN 'Bill'
ELSE 'Ret'
END) AS Type,
COALESCE(b.Amount, r.Amount) AS Amount
FROM Products p
LEFT JOIN Bills b ON b.ProductId = p.ProductId
LEFT JOIN Returns r ON r.ProductId = p.ProductId
Для меня очень важно одно: настоящий сценарий-запрос НАМНОГО больше, и я не хочу копировать / вставлятьвся логика запроса там, как если бы это было в случае использования Union.