-1
에 워크 벤치하지만 오류가 작동하지만 반환 MySQL의 문은 다음과 같은 SQL 코드는 MySQL의 워크 벤치에서 잘 실행되는 PHP
"문자열 (228)"당신은 당신의 SQL 구문에 오류가 있습니다; 오른쪽 구문 에 대해 MariaDB 서버 버전에 해당하는 설명서 을 확인하십시오. 'p2.this_year, year (p.PAID_DATE)를 current_year, c1.s1, c2.p1, c3.p2, ly.last_로 선택하십시오. 'PHP 라인 6 "에서.
나는. 사전에. 사람이 어떤 아이디어가 있는지 궁금. 아무 소용에 대한 답변에 대한 감사를 검색 한
$dbinfo = dbinfo();
$con = mysqli_connect($dbinfo['localhost'],$dbinfo['localuser'],$dbinfo['localpass'],$dbase);
if (!$con) die('Could not connect: ' . mysqli_error($con));
$sql = "
SET @startdate = DATE(CURDATE()- INTERVAL DAYOFYEAR(CURDATE())+1 DAY), @enddate = CURDATE(),
@laststart = DATE_SUB(@startdate, INTERVAL 1 YEAR),
@lastend = DATE_SUB(@enddate, INTERVAL 1 YEAR)
;
SELECT p2.this_year,year(p.PAID_DATE) as current_year,c1.s1,c2.p1,c3.p2,ly.last_year,
lyc1.s1,lyc2.p1,lyc3.p2
FROM btb.payments as p
join (
select CLIENTID,sum(TOTAL) this_year,PAID_DATE
from btb.payments
where PAID_DATE between @startdate and @enddate
) as p2
join (
select id_no,count(SUMMER_PT1) S1
from btb.Client
where SUMMER_PT1 <> ''
) as c1
on c1.ID_NO = p.CLIENTID
join (
select id_no,count(PART1) P1
from btb.Client
where PART1 <> ''
) as c2
join (
select id_no,count(PART2) P2
from btb.Client
where PART2 <> ''
) as c3
join (
SELECT CLIENTID,sum(TOTAL) as last_year
FROM btb.payments
where PAID_DATE between @laststart and @lastend
) as ly
join (
SELECT d.CLIENTID,d.SESSION,count(p.CLIENTID) s1
FROM btb.Details d
join btb.payments p
on p.CLIENTID = d.CLIENTID
where p.PAID_DATE between @laststart and @lastend
and d.year = year(@laststart)
and d.SESSION = 'S1'
) as lyc1
-- on c1.ID_NO = p.CLIENTID
join (
SELECT d.CLIENTID,d.SESSION,count(p.CLIENTID) p1
FROM btb.Details d
join btb.payments p
on p.CLIENTID = d.CLIENTID
where p.PAID_DATE between @laststart and @lastend
and d.year = year(@laststart)
and d.SESSION = 'P1'
) as lyc2
join (
SELECT d.CLIENTID,d.SESSION,count(p.CLIENTID) p2
FROM btb.Details d
join btb.payments p
on p.CLIENTID = d.CLIENTID
where p.PAID_DATE between @laststart and @lastend
and d.year = year(@laststart)
and d.SESSION = 'P2'
) as lyc3
where p.PAID_DATE between @startdate and @enddate
;";
$result = mysqli_query($con, $sql);
if($result === false) {
var_dump(mysqli_error($con));
}
else {
print_r(mysqli_num_rows($result));
}
이것은 PHP와 관련이 있습니까? 귀하의 코드에 SQL 만 포함 된 것 같습니다. – YakovL
죄송합니다. PHP 코드도 편집하고 추가했습니다. –
하나의 mysqli 쿼리에서 여러 개의 sql 문을 사용할 수 있습니까? 같은 쿼리에서 간단한 '집합'과 간단한 쿼리를 시도해 보겠습니다. –