반응형
형제 결과에서 매개 변수에 대한 행 값을 일치시키는 방법은 무엇입니까?
모든 결과를 얻기 위해 루프를 실행하는 DB 콜이 2개 있습니다.
우선 저는 올해와 관련된 결과를 얻고 있습니다.
둘째, 전년도(-1)에 대한 결과를 얻을 수 있습니다.
어떻게 하면 두 번째 루프 출력의 달을 첫 번째 루프에서 같은 달에 맞출 수 있을까요?
public function cargovolumes_cy() {
global $wpdb;
$cargodb = new $wpdb('root', 'devpw', 'exdb', 'localhost');
$currentmonthtxt = date('M');
$currentyear = date('Y');
$cargovolume_cy = array();
foreach($cargodb->get_results(
"
SELECT *, SUM(tonneCount)
FROM volumes
WHERE year = $currentyear
GROUP BY terminal, year, month
ORDER BY month desc, year desc
"
) as $key => $row) {
$tonnages = $row->tonneCount;
$terminal = $row->terminal;
$year = $row->year;
$month = $row->month;
$cargovolume_cy[] =
'<h4 class="cv-terminal-title">'.$terminal.' </h4>'.
'<div class="cargovolumes_cy">'.
'<div class="cargovolumes_cy-dates cvrow-'.$month.'-'.$year.'">'.
'<span class="cy-month"> '.$month.' </span>'.
'<span class="cy-year"> '.$year.' </span></div>'.
'<div class="cy-year-bar"><div class="cy-tonnage-bar"> </div>'.
'<span class="cy-tonnage" value="'.$tonnages.'"> '.$tonnages.' </span></div>'.
'</div>';
};
return $cargovolume_cy;
}
public function cargovolumes_ly() {
global $wpdb;
$cargodb = new $wpdb('root', 'devpw', 'exdb', 'localhost');
// $stable = $shipdb->get_results("SELECT * FROM volumes", ARRAY_A);
$currentmonthtxt = date('M');
$currentyear = date('Y');
$cargovolume_ly = array();
foreach($cargodb->get_results(
"
SELECT *, SUM(tonneCount)
FROM volumes
WHERE year = $currentyear -1
GROUP BY terminal, year, month
ORDER BY month desc, year desc
"
) as $key => $row) {
$tonnages = $row->tonneCount;
$terminal = $row->terminal;
$year = $row->year;
$month = $row->month;
$cargovolume_ly[] =
'<div class="cargovolumes_ly">'.
'<div class="cargovolumes_ly-dates">'.
'<span class="ly-month"> '.$month.' </span>'.
'<span class="ly-year"> '.$year.' </span></div>'.
'<div class="ly-year-bar"><div class="ly-tonnage-bar"> </div>'.
'<span class="ly-tonnage" value="'.$tonnages.'"> '.$tonnages.' </span></div>'.
'</div>';
};
return $cargovolume_ly;
}
그 결과 월과 연도가 일치하는 2개의 요소가 출력됩니다.대신 첫 번째 출력에서는 가장 최근 달이 나오고 두 번째 출력에서는 한 해의 마지막 달이 나옵니다.
컨테이너 요소는 다음과 같습니다.
@for ($i = 0; $i < min(count($cargovolumes_cy), count($cargovolumes_ly)); $i++)
<div class="page_cargovolumes-info_grid-cy_item">
{!! $cargovolumes_cy[$i] !!}
{!! $cargovolumes_ly[$i] !!}
</div>
@endfor
너무 복잡하게 만드는 거 아니야?
2개의 SQL 쿼리를 차례로 실행하는 대신 단말기당, 매월 레코드를 하나씩 생성하는 SQL 쿼리를 구축할 수 있습니다.이것에 의해, 금년도와 작년도의 볼륨의 합계가, 2개의 별도 열에 표시됩니다.이것을 조건부 집약이라고 부릅니다.
고려사항:
SELECT
terminal,
month,
SUM(CASE WHEN year = YEAR(CURDATE()) THEN tonneCount ELSE 0 END) tonnage_cy,
SUM(CASE WHEN year = YEAR(CURDATE()) - 1 THEN tonneCount ELSE 0 END) tonnage_ly
FROM volumes
WHERE year >= YEAR(CURDATE()) - 1
GROUP BY terminal, month
ORDER BY month desc
주의:
SELECT *
와 함께GROUP BY
권장되지 않으며 오래된 MySQL 버전 이외의 버전에서는 오류가 발생할 수 있습니다.반환할 컬럼을 명시적으로 나열하여 모든 비집약 컬럼을 에 추가하는 것이 좋습니다.GROUP BY
clause)를 참조해 주세요.- sql에서 직접 올해를 계산할 수 있습니다.
YEAR(CURDATE())
PHP를 사용하는 대신date()
기능.
이와 달리 어레이에 몇 개월을 저장할 수 있습니다.
$cargovolume_cy["$terminal-$month-$year"] =
'<h4 class="cv-terminal-title">'.$terminal.' </h4>'.
'<div class="cargovolumes_cy">'.
'<div class="cargovolumes_cy-dates cvrow-'.$month.'-'.$year.'">'.
'<span class="cy-month"> '.$month.' </span>'.
'<span class="cy-year"> '.$year.' </span></div>'.
'<div class="cy-year-bar"><div class="cy-tonnage-bar"> </div>'.
'<span class="cy-tonnage" value="'.$tonnages.'"> '.$tonnages.' </span></div>'.
'</div>';
그런 다음 컨테이너 요소에 다음과 같이 적습니다.
@foreach ($cargovolumes_cy as $key_1 => $volume_cy)
@foreach ($cargovolumes_ly as $key_2 => $volume_ly)
@if (explode('-', $key_1)[1] == explode('-', $key_2)[1])
<div class="page_cargovolumes-info_grid-cy_item">
{!! $volume_cy !!}
{!! $volume_ly !!}
</div>
@endif
@endforeach
@endforeach
언급URL : https://stackoverflow.com/questions/57749965/how-to-match-row-value-as-variable-for-parameter-in-sibling-results
반응형
'itsource' 카테고리의 다른 글
Java에서 Clojure로 리라이트 (0) | 2022.09.11 |
---|---|
스칼라 변환 방법java.util.List에 목록 표시? (0) | 2022.09.11 |
어레이의 한 속성에 대해 어레이 내의 개체를 알파벳 순으로 정렬합니다. (0) | 2022.09.11 |
스프링 부트 시 "기본 보안 비밀번호 사용" 삭제 (0) | 2022.09.11 |
MariaDB(mysql-config-editor에 상당)의 어디에 패스워드/로그인 패스를 저장합니까? (0) | 2022.09.11 |