Следующим является мой запрос:
$sales = DB::table('sales') ->leftJoin('category_sales', 'category_sales.sale_id', '=', 'sales.id') ->leftJoin('department_sales', 'department_sales.sale_id', '=', 'sales.id') ->leftJoin('store_configs', 'store_configs.id', '=', 'sales.store_config_id') ->select('sales.date', DB::raw('store_configs.store_dba'), DB::raw('sales.id'), DB::raw('(sales.taxable + sales.non_taxable + category_sales.amount + department_sales.amount) as total_sales'), DB::raw('0.0825*(sales.taxable + category_sales.amount + department_sales.amount) as total_tax')) ->groupBy('date')->orderBy('date', 'desc') ->get();
Я получаю правильное значение, когда у меня есть значения в таблице category_sales and department_sales
. Допустим, у меня нет amount value for the sales_id in category_sales
таблице amount value for the sales_id in category_sales
, конечный результат для total_sales
и total_tax
равен null.
Мой вопрос: как бы я все еще суммировать значения полей, если данные присутствуют?
taxable, non_taxable, and amount'
в category_sales and department_sales
являются целыми, а defaults
по defaults
равны 0
Моя таблица структура только для идеи и похожа на department_sales:
CREATE TABLE `category_sales` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `amount` int(11) NOT NULL DEFAULT '0', `category_id` int(10) unsigned DEFAULT NULL, `sale_id` int(10) unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `category_sales_category_id_index` (`category_id`), KEY `category_sales_sale_id_index` (`sale_id`), CONSTRAINT `category_sales_category_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`) ON DELETE CASCADE, CONSTRAINT `category_sales_sale_id_foreign` FOREIGN KEY (`sale_id`) REFERENCES `sales` (`id`) ON DELETE CASCADE) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;