반응형
내 PHP 웹 사이트를 Yii2 프레임 워크로 마이그레이션 할 때 아래 쿼리를 작성했습니다. 승리 한 상위 10 개 베팅을 표시하기 위해 컨트롤러에 추가하고 싶습니다. 많은 Yii2 데이터베이스 클래스를 살펴 보았지만 작동하지 않습니다.
내 테이블은 다음과 같습니다.
사용자 :
id | user_name | user_status | ...other columns...
베팅 :
id | user_id | date_time |...other columns...| balance_return
Yii2에서 얻고 싶은 쿼리는 다음과 같습니다.
$query_all = $dbh->query("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name
, users.user_status
FROM bets INNER JOIN users ON bets.user_id = users.id
WHERE users.user_status = 'verified'
AND bets.date_time > " . $start_date . "
GROUP BY bets.user_id
ORDER BY total_win DESC
");
start_date 변수는 time ()
에 따라 계산 한 6 개월의 기간입니다. 또한 balance_return
은 사용자가 얻은 모든 승리이므로 그 합계가 순위를 결정합니다.
두 번째 쿼리는 다음과 같습니다.
$qwi = $dbh->query("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name
, users.user_status
FROM bets INNER JOIN users ON bets.user_id = users.id
WHERE users.user_status = 'verified'
AND bets.date_time > " . $start_date . "
GROUP BY bets.user_id
ORDER BY total_win DESC LIMIT 0,10
");
해결 방법
다음과 같이 원시 SQL을 실행할 수 있습니다.
$connection = Yii::$app->getDb();
$command = $connection->createCommand("
SELECT SUM(bets.balance_return) AS total_win
, bets.user_id
, users.user_name
, users.user_status
FROM bets INNER JOIN users ON bets.user_id = users.id
WHERE users.user_status = 'verified'
AND bets.date_time > :start_date
GROUP BY bets.user_id
ORDER BY total_win DESC", [':start_date' => '1970-01-01']);
$result = $command->queryAll();
첫 번째 매개 변수는 sql (자리 표시 자 포함)이고 두 번째 부분은 자리 표시 자와 함께 사용할 값의 배열입니다.
참조 페이지 https://stackoverflow.com/questions/30081660
반응형
'MySql' 카테고리의 다른 글
MySQL PDO 설치-pdo_mysql 활성화 (0) | 2020.11.20 |
---|---|
MySQL "모든 따옴표 앞에 슬래시"문제 (0) | 2020.11.20 |
MySQL 숫자를 varchar로 저장 (0) | 2020.11.20 |
MySQL에서 다음 달의 첫 번째와 마지막 날짜를 가져옵니다. (0) | 2020.11.20 |
MySQL 기존 테이블에 새 열거 형 열 추가 (0) | 2020.11.20 |
댓글