테스트 사이트 - 개발 중인 베타 버전입니다

sql 날짜 지정해서 검색하는 질문드립니다. 채택완료

GeeDay 4년 전 조회 2,754

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개

채택된 답변
+20 포인트
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개

G
GeeDay
4년 전
감사합니다. 이렇게 하니깐 잘 나오네요.

댓글을 작성하려면 로그인이 필요합니다.

해당 테이블 화면을 캡쳐해주셔야 정확한건 알수 있을거 같네요

 

구문이 이상이 없다면 데이터에 실제 비교하는 데이터가 없어서 발생하는거 같네요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

G
GeeDay
4년 전
아 그렇다면 mb_point는 g5_member에 있고
po_rel_action 는 g5_point 테이블에 있어서 비교를 못하는 걸까요?
같이 비교를 하고 싶다면 어떻게 해야할까요

댓글을 작성하려면 로그인이 필요합니다.

답변에 대한 댓글 1개

G
GeeDay
4년 전
올려주신 링크보고 문서도 보고 다 해봤는데 안나오네요

댓글을 작성하려면 로그인이 필요합니다.

`mb_1` = '서울대학교' AND `po_rel_action` >= '".$prevdate."' AND `po_rel_action` <= '".$nextdate."'

날짜 비교만 하실 거면 이런 식으로 하셔야 하지 않을까 싶네요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 9개

G
GeeDay
4년 전
안나오네요
쟁반짜장
4년 전
[code]
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]
제가 테스트 데이터가 없어서 정상적으로 작동할지 의문입니다.
G
GeeDay
4년 전
계속 도움 주셔서 감사합니다.
<?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." 포인트";
?>
혹시 날짜 형식이 문제인가 해서 이렇게 넣었는데도 안나오네요.
쟁반짜장
4년 전
echo $sql;
이렇게 해서 이걸 phpmyadmin에 붙여 넣어 보세요.
그러면 오류가 뭐라고 뜹니다.
G
GeeDay
4년 전
정적 분석 :

분석 중에 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)

라고 나오네요
쟁반짜장
4년 전
echo $sql;
이렇게 했을 때 값이 어떻게 나오나요?
쿼리문을 여기다가 올려 보세요.
G
GeeDay
4년 전
echo $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 '2020-12-01 00:00:00' AND '2020-12-31 23:59:59'

이렇게 출력됩니다.
쟁반짜장
4년 전
저 쿼리문이 실행 안 되는 건가요?
저는 오류 없이 실행이 잘 되는 것 같습니다.
G
GeeDay
4년 전
네, adm/point_list.php 에 저 쿼리문을 넣어서 출력하려고 하는데 출력이 안되네요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인