sql 날짜 지정해서 검색하는 질문드립니다. 채택완료
sql을 공부중인 초보자 입니다
<?php
$prevdate = "2020-12-01";
$nextdate = "2020-12-13";
$sql = " select sum(mb_point) as sum_point from g5_member where mb_1 = '서울대학교' and date('{$prevdate}') <= date(po_rel_action) >= date('{$nextdate}') ";
$row = sql_fetch($sql);
$sum = $row['sum_point'];
echo $sum." 포인트";
?>
회원중 여분필드가 서울대학교인 사람들의 포인트 적립일시를 기준으로
기간을 정해서 포인트 총합을 구하려고 저렇게 짰는데 아무것도 나오지않아서 질문드립니다.
답변 4개
</p>
<p><?php
$prevdate = "2020-12-01";
$nextdate = "2020-12-13";</p>
<p>$sql = "
select sum(po_point) as sum_point
from g5_point
where po_datetime between '{$prevdate}' and '{$nextdate}'
and mb_id in (select mb_id from g5_member where mb_1 = '서울대학교')
";
$row = sql_fetch($sql);
$sum = $row['sum_point'];</p>
<p>echo $sum." 포인트";
?></p>
<p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
해당 테이블 화면을 캡쳐해주셔야 정확한건 알수 있을거 같네요
구문이 이상이 없다면 데이터에 실제 비교하는 데이터가 없어서 발생하는거 같네요.
답변에 대한 댓글 1개
po_rel_action 는 g5_point 테이블에 있어서 비교를 못하는 걸까요?
같이 비교를 하고 싶다면 어떻게 해야할까요
댓글을 작성하려면 로그인이 필요합니다.
$sql = " select sum(mb_point) as sum_point from g5_member where mb_1 = '서울대학교' and po_rel_action between '".$prevdate."' and '".$nextdate."'";
https://www.google.co.kr/search?ei=Mj_YX5DaMcelmAWekZ74BA&q=mysql+between+%EB%82%A0%EC%A7%9C&oq=mysql+between+%EB%82%A0%EC%A7%9C&gs_lcp=CgZwc3ktYWIQAzICCAAyAggAMgIIADoHCAAQsQMQQzoECAAQQ1C6DVjLGGCDGmgAcAB4AIABwwGIAYcIkgEDMC43mAEAoAEBqgEHZ3dzLXdpesABAQ&sclient=psy-ab&ved=0ahUKEwiQu9TSls_tAhXHEqYKHZ6IB08Q4dUDCA0&uact=5">https://www.google.co.kr/search?ei=Mj_YX5DaMcelmAWekZ74BA&q=mysql+between+%EB%82%A0%EC%A7%9C&oq=mysql+between+%EB%82%A0%EC%A7%9C&gs_lcp=CgZwc3ktYWIQAzICCAAyAggAMgIIADoHCAAQsQMQQzoECAAQQ1C6DVjLGGCDGmgAcAB4AIABwwGIAYcIkgEDMC43mAEAoAEBqgEHZ3dzLXdpesABAQ&sclient=psy-ab&ved=0ahUKEwiQu9TSls_tAhXHEqYKHZ6IB08Q4dUDCA0&uact=5
이걸로 검색하셔서 좀더 자세한건 보시면 될거 같습니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
`mb_1` = '서울대학교' AND `po_rel_action` >= '".$prevdate."' AND `po_rel_action` <= '".$nextdate."'
날짜 비교만 하실 거면 이런 식으로 하셔야 하지 않을까 싶네요.
답변에 대한 댓글 9개
SELECT SUM(DISTINCT m.`mb_point`) FROM `g5_member` AS m LEFT JOIN `g5_point` AS p ON m.`mb_id` = p.`mb_id` WHERE m.`mb_1` = '서울대학교' AND p.`po_rel_action` BETWEEN '".$prevdate."' AND '".$nextdate."'
[/code]
제가 테스트 데이터가 없어서 정상적으로 작동할지 의문입니다.
<?php
$prevdate = "2020-12-01 00:00:00";
$nextdate = "2020-12-31 23:59:59";
$sql = " SELECT SUM(DISTINCT m.`mb_point`) FROM `g5_member` AS m LEFT JOIN `g5_point` AS p ON m.`mb_id` = p.`mb_id` WHERE m.`mb_1` = '서울대학교' AND p.`po_datetime` BETWEEN '".$prevdate."' AND '".$nextdate."' ";
$row = sql_fetch($sql);
$sum = $row['sum_point'];
echo $sum." 포인트";
?>
혹시 날짜 형식이 문제인가 해서 이렇게 넣었는데도 안나오네요.
이렇게 해서 이걸 phpmyadmin에 붙여 넣어 보세요.
그러면 오류가 뭐라고 뜹니다.
분석 중에 2개의 오류가 발생했습니다.
Unexpected beginning of statement. (near "$prevdate" at position 0)
Unexpected beginning of statement. (near ""2020-12-01"" at position 12)
SQL 질의:
$prevdate = "2020-12-01"
MySQL 메시지: 문서
#1064 - 'SQL 구문에 오류가 있습니다.' 에러 같읍니다. ('$prevdate = "2020-12-01"' 명령어 라인 1)
라고 나오네요
이렇게 했을 때 값이 어떻게 나오나요?
쿼리문을 여기다가 올려 보세요.
SELECT SUM(DISTINCT m.`mb_point`) FROM `g5_member` AS m LEFT JOIN `g5_point` AS p ON m.`mb_id` = p.`mb_id` WHERE m.`mb_1` = '서울대학교' AND p.`po_datetime` BETWEEN '2020-12-01 00:00:00' AND '2020-12-31 23:59:59'
이렇게 출력됩니다.
저는 오류 없이 실행이 잘 되는 것 같습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인