반응형
MariaDB의 동적 피벗 테이블이 php에서 작동하지 않는 쿼리
얘들아, 내가 이 쿼리를 PHP 코드로 변환하는 것을 도와줄 수 있나요?
set @sql = (
select group_concat(distinct
concat(
"sum(case when `test_id`='",test_id, "' then `points` ELSE '0' end) as `", `test_id`, "`"
)
)
from test_answered WHERE checked = '1'
);
set @sql = concat("select url_id, ", @sql, " from test_answered group by `url_id`");
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
저는 그 코드를 php로 시도할 수 없습니다.그런데 저는 PDO를 사용하고 있습니다.그래서 이것은 저에게 어려울 것입니다.
나는 이 코드를 시도합니다.
$quer = "SELECT url_id,test_id,points,GROUP_CONCAT(DISTINCT CONCAT('SUM(CASE WHEN test_id = 'test_id' THEN points ELSE '0' END))') AS test FROM test_answered WHERE checked = '1' GROUP BY id";
$arr4 = ['test_id'=>$array];
$data3 = $test_a->query($quer);
하지만 그것은 나에게 이것을 줍니다.
치명적 오류:발견되지 않은 PDO 예외: SQLSTATE[42000]:구문 오류 또는 액세스 위반: 1064 SQL 구문에 오류가 있습니다. 마리아DB 서버 버전에 해당하는 설명서에서 "THEN points '0' END(끝)" 근처에서 사용할 올바른 구문을 확인하십시오.) AS test_answerfrom WHERE가 1행에서 확인됨 = '1...'
쿼리에서 일부 따옴표와 쉼표를 누락한 것 같습니다.
어쨌든 시도해 보십시오.
<?php
$conn = new PDO(/* HERE_THE_CONNECTION_STRING */, $user, $pwd);
$innerPivotQuery = <<<SQL
SELECT GROUP_CONCAT(DISTINCT CONCAT(" SUM(CASE WHEN `test_id`='", test_id, "' THEN `points` ELSE '0' END) as `", `test_id`, "`"))
FROM test_answered WHERE checked = '1'
SQL;
$pivotQuery = <<<SQL
SELECT CONCAT("SELECT url_id,",
($innerPivotQuery),
" FROM test_answered GROUP BY `url_id`");
SQL;
$pivotStmt = $conn->query($pivotQuery);
$query = $pivotStmt->fetch()[0];
$stmt = $conn->query($query);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
예를 들어, 오류 관리를 추가해야 합니다.
언급URL : https://stackoverflow.com/questions/75973656/dynamic-pivot-table-in-mariadb-not-working-query-in-php
반응형
'programing' 카테고리의 다른 글
| 마시멜로의 스토리지 사용 권한 오류 (0) | 2023.08.06 |
|---|---|
| Android Room - 자동 생성으로 삽입된 새 행의 ID 가져오기 (0) | 2023.08.06 |
| Spring Boot API 게이트웨이에서 이름을 확인할 수 없습니다. (0) | 2023.08.06 |
| pymysql을 사용하여 MySQL에 데이터 파일을 로드할 수 없음 - 파일을 찾을 수 없음 (0) | 2023.08.06 |
| Xcode 6에서 "일치하는 서명 자산을 찾거나 생성하지 못했습니다." 오류가 발생하는 이유는 무엇입니까? (0) | 2023.08.06 |