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개 / 댓글 12개
<?php
$prevdate = "2020-12-01";
$nextdate = "2020-12-13";
$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'];
echo $sum." 포인트";
?>
답변에 대한 댓글 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
이걸로 검색하셔서 좀더 자세한건 보시면 될거 같습니다.
답변에 대한 댓글 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." 포인트";
?>
혹시 날짜 형식이 문제인가 해서 이렇게 넣었는데도 안나오네요.
분석 중에 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'
이렇게 출력됩니다.
답변을 작성하려면 로그인이 필요합니다.