幫我查詢一下。我有一個 Laravel 應用程式,其中有一個包含 3 列(季度、年份、值)的表格。
| 四分位數 | 年 | 價值 |
|---|---|---|
| 1 | 2019年 | 3 |
| 2 | 2019年 | 5 |
| 3 | 2019年 | 5 |
| 4 | 2019年 | 10 |
| 1 | 2020年 | 7 |
| 2 | 2020年 | 5 |
例如,我想獲取從 quartal 3 years 2019 到 quartal 2 years 2020 的值,如何查詢這種情況?對于我可以使用的年份,但對于四分位數,這取決于年份。
這是我當前的查詢。但效果不佳
DB::table($table)
->whereBetween('year',[$startYear, $endYear])
->whereBetween('quartal',[$startQuartal, $endQuartal])
->get();
uj5u.com熱心網友回復:
將四分位數添加到年份怎么樣?
DB::table($table)
->whereBetween(
DB::raw('year (quartal - 1) / 4'),
[
$startYear ($startQuartal - 1) / 4,
$endYear ($endQuartal - 1) / 4
]
)
->get();
uj5u.com熱心網友回復:
你需要做的是,你需要從創建復合柱quartal和year再查詢。
DB::table($table)
->whereRaw("concat(year,quartal) >= ?", "$startYear$startQuartal")
->whereRaw("concat(year,quartal) <= ?", "$endYear$endQuartal")
->get();
你可以參考這個 sql quey https://www.db-fiddle.com/f/4GRH5RKqQi2Fc6wVvxK8C2/0
uj5u.com熱心網友回復:
您也可以使用過濾器功能來完成它,它就像一個簡單的方法
$startYear = 2019
$endyear = 2020
$startQuartar = 3
$endQuartar = 2
DB::table($table)
->whereBetween('year',[$startYear, $endYear])
->get()->filter(function($query) use
($startYear,$endYear,$startQuartar,$endQuartar){
if($query->year == $startYear and $query->quartar < $startQuartar){
return false;
}
if($query->year == $endYear and $query->quartar > $endQuartar){
return false;
}
return true;
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/322918.html
標籤:mysql 拉拉维尔 雄辩 laravel 查询构建器
上一篇:視窗函式查詢問題?
下一篇:這個自內連接查詢是如何作業的?
