Как объединить вывод двух запросов в MYSQL, когда они имеют несовместимые условия

282
NiallBC

Я ищу некоторую помощь в суммировании результатов двух следующих запросов. У них есть два несовместимых условия, поэтому я пытаюсь объединить их в одном запросе.

Общий доход с начала года

Как совместить вывод обоих запросов?

SELECT  sum(datediff(returndate, dueDate)*(products.rentalfee*0.2)) AS 'Late Fees YTD' FROM products INNER JOIN orderdetails ON products.productID = orderdetails.productID WHERE returndate > duedate 

А также

SELECT  sum(products.RentalFee*orderdetails.quantity) AS 'Total Revenue YTD' FROM products INNER JOIN orderdetails ON products.productID = orderdetails.productID WHERE returndate > duedate OR duedate = returndate  
4

1 ответ на вопрос

0
Brandon

Вы можете попробовать использовать оба запроса в предложении select третьего запроса, в котором таблица, из которой вы выбираете, имеет значение DUAL. Это позволяет возвращать одну строку с результатами обоих запросов.

Пример:

Запрос:

ВЫБРАТЬ (ВЫБРАТЬ  сумма (дата (возвращение, срок) * (products.rentalfee * 0.2))  ИЗ продуктов INNER JOIN заказать детали ON products.productID = orderdetails.productID ГДЕ отступить> ДУТАТЬ) КАК «Поздние сборы с начала года» ,(ВЫБРАТЬ  сумма (products.RentalFee * orderdetails.quantity) ИЗ продуктов INNER JOIN заказать детали ON products.productID = orderdetails.productID ГДЕ возвратиться> duedate ИЛИ duedate = returndate) КАК «Общий доход с начала года» 

ОТ ДВОЙНОГО;

Результат:

+ --------------- + ------------------- + | Поздние сборы с начала года | Общий доход с начала года | + --------------- + ------------------- + | 3 | 4 | + --------------- + ------------------- +