次は私のクエリです:Laravel SUM生のクエリではnullを返し
$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
テーブルを持っていないと言って、total_sales
とtotal_tax
の最終結果はnullです。
私の質問は、データが存在する場合でもフィールドの値をどのように合計しますか? category_sales and department_sales
で
taxable, non_taxable, and amount'
ちょうどアイデア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;
データがない場合はnullの代わりに "0"を表示しますか?あなたの質問にタイプがありますか? – amaksr
フィールドのいずれかが空でも空でもない場合は、値を持つフィールドの合計を取得する必要があります。 – score