FROM Блюда b JOIN Заказы z ON b.ID_ Блюдо = z. Блюдо
GROUP BY b. Блюдо
HAVING SUM(z.Количество_порций) = (SELECT MIN (кол)
FROM ( SELECT SUM(Количество_порций) as кол
FROM Заказы
GROUP BY Блюдо) m)
ORDER BY b.Блюдо;
Реализация внешнего полного соединения через запросы с UNION.
Если ваша система баз данных не поддерживает синтаксис FULL OUTER JOIN, те же результаты можно получить с помощью более сложного запроса, используя UNION.
Схема такого запроса имеет вид:
SELECT <поля для вывода>
FROM таблица_А LEFT OUTER JOIN таблица_В ON <условие связи>
UNION
SELECT <поля для вывода>
FROM таблица_А RIGHT OUTER JOIN таблица_В ON <условие связи>;
Как вы можете видеть, левое и правое внешние соединения, просто объединяются друг с другом с помощью оператора UNION.
Следует отметить, что предложение GROUP BY с оператором GROUPING SETS может дать такой же результирующий набор, как и несколько простых предложений GROUP BY, объединенных с помощью UNION ALL.
Синтаксис:
GROUP BY GROUPING SETS (<набор группирования> [, ... n ])
Следующие инструкции эквивалентны.
SELECT Блюдо, ID_Заказ, SUM(Количество_порций)
FROM Заказы
GROUP BY GROUPING SETS (Блюдо,ID_Заказ);
SELECT Блюдо, NULL as ID_Заказ, SUM(Количество_порций)
FROM Заказы
GROUP BY Блюдо