쿼리문에 대해서 질문좀 드리겠습니다. ^^;; > 그누4 질문답변

그누4 질문답변

그누보드4 관련 질문은 QA 로 이전됩니다. QA 그누보드4 바로가기
기존 게시물은 열람만 가능합니다.

쿼리문에 대해서 질문좀 드리겠습니다. ^^;; 정보

쿼리문에 대해서 질문좀 드리겠습니다. ^^;;

본문

오늘 하루도 즐거운 하루 보내시길 바라며 퀄러문에 대해서 질문좀 그리겠습니다. ^^

http://sir.co.kr/bbs/board.php?bo_table=g4_qa&wr_id=143655

질문 게시판에서 특정 게시판에 해당 여분 필드에 관한 글을 출력 하는 법을 엔포님께서
답변을 해주셨습니다. ^^ 감사 드립니다.


$count = sql_fetch("select count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' and `wr_1`='그누보드'");
echo $count[cnt];
// 그누보드인것만 출력시

$que = sql_query("select count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc");
// wr_1 한꺼번에 출력시


이렇게 했을 경우

위에것은 갯수가 잘찍히는데

아래것으로 하면 서누기님의 말씀에 의하면

group by로 하면 wr_1에서 중복을 제외하고 찾아줍니다.


wr_1이라고 하면

네이버
네이버
그누보드
그누보드
그누보드
네이버
네이버


네이버
그누보드
이렇게 나옵니다

네이버 cnt=4
그누보드 cnt=3


이렇게 찍힌다고 말씀을 하시는데 아무것도 나오지가 않던데 .. 그래서 엑스엠엘님께서 ..

group by wr_1하면 wr_1값을 구별하여 각각의 코멘트 숫자를 구해 줍니다.
단 게시판 하나에서죠,

그누보드4는 게시판마다 별도 테이블로 되어 있어서 그룹(테이블 집합)에서
단순 query로는 가져 올 수 없습니다.

union all를 사용해 보세요.


단순 쿼리문데서는 안된다고 union all 을 사용하라고 하시는데
검색을 했는데도 잘 모르겠어서 질문을 드립니다. ^^
$que = sql_query("select count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc");
// wr_1 한꺼번에 출력시


쿼리문으로 서누기님께서 말씀 하신대로 출력을 하려면 어떻게 사용을 해야 하나해서
질문좀 드립니다. ^^;;

검색을 한다고 했는데 초보라 그런지 잘 모르겠어서 질문 드립니다. ^^;;

댓글 전체

코드에 특별한 문제는 없어 보이지만, wr_1을 하나 더 삽입해서 사용해 보시죠.
그래야 갯수에 해당하는 wr_1값을 알 수가 있겠죠.

$que = sql_query("select wr_1, count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc");
두손모아님 답변 감사 드립니다. ^^

근데 안되네요 ^^

여분필드에 입력된것을 중복된걸 제외 하고

서누기님 말씀대로 자동으로

네이버 4
그누보드 3
이렇게 표시를 하고 싶은데 안되는군요 ^^;;
지금 보니까... sql_query(....) 가 아니라 sql_fetch(...) 이네요.

$row = sql_fetch("select wr_1, count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc");

echo "$row[wr_1], $row[cnt]";

이렇게 해 보세요...
두손모아님 친절한 답변 진심으로 감사 드립니다. ^^

위에것으로하니 잘 나오는데 ..

네이버 4
그누보드 3
다음2

이렇게 전부 출력이 되는게 아닌

문제는 wr_1 여분필드에 많이 등록된것만 뽑아 오는거 같습니다. ^^;;

즉 네이버4 이렇게 달랑 하나만 찍히네요 ^^;; 어디를 더 손을 대야 할까요 ??
너무 몰라서 죄송합니다. ^^;;
두손 모아님 소중한 답변 감사 드립니다. ^^

즉 만약에 test 라는 게시판에 ^^;; wr_1 여분필드에 임의로 글을 작성 할때마다 ..

네이버
다음
네이버
야후
엠파스
네이버
다음

이런식으로 적습니다. ^^;;

그렇다면 다른 페이지에서 테스트라는 게시판에서 wr_1 에 작성된 게시물 목록과 갯수를 많은 순으로 해서 자동정렬해서 보여주려고 합니다.

-------------------------------------------------------------------------------------------
네이버 : 3    |  다음  2    |  야후  1  |  엠파스 1 
-------------------------------------------------------------------------------------------

이런식으로 보여 주려고 합니다. ^^;;

$que = sql_query("select count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc");

서누기님 말씀에 의하면 위의 퀄리를 날렸을때에 정렬해서 뿌려 준다고 말씀을 하시길래 .. 해봤는데
안되더라구요 ^^;;
근데 두손 모아님께서 말씀 하신 코드로 해보니 뿌려주긴 하는데 ..

가장 많이 입력된 글을 1개만 뿌려주더라구요 ^^;;
이렇게 해 보시죠.

$sql="select wr_1, count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc";

$print_str="";
for ($i=0; $row = sql_fetch($sql); $i++) {
  $print_str=$print_str."$row[wr_1] : $row[cnt] | ";
}
$print_str=substr($print_str,0,-2);
echo $print_str;

테스트 없이 적는거라 에러 없으려나 모르겠네요....?
두손모아님 답변 정말 감사 드립니다. ^^

에러는 없는데 페이지가 안뜨네요 ^^;; 마치 무한루프라도 도는것처럼 페이지 자체가 시간이 상당히
오래 기달려도 안뜨네요 위에 것으로 해보니 1분이 다 되어 가도 안뜨네요 ^^;;
역시... 테스트 없이 하느라 한 줄이 빠졌군요... 이렇게 하세요.

$sql="select wr_1, count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc";
$result1 = sql_query($sql);
$print_str="";
for ($i=0; $row = sql_fetch($result1); $i++) {
  $print_str=$print_str."$row[wr_1] : $row[cnt] | ";
}
$print_str=substr($print_str,0,-2);
echo $print_str;
자꾸 여쭈어 보기 죄송해 지네요 ^^;;

이번엔 위에것으로 확인을 해보니 이런 에러가 발생을 하네요 ^^;;


Resource id #64

1064 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #64' at line 1

error file : /testpage.php

위와 같은 에러가 발생을 하네요 ^^;;
이렇게 함 해 보시구 답변 주세요.
그누 함수를 mysql 함수로 바꾸었습니다...

$sql="select wr_1, count(*) as cnt from `g4_write_게시판코드` where `wr_is_comment`='0' group by `wr_1` order by cnt desc";
$result1 = mysql_query($sql);
$print_str="";
for ($i=0; $row = mysql_fetch_array($result1); $i++) {
  $print_str=$print_str."$row[wr_1] : $row[cnt] | ";
}
$print_str=substr($print_str,0,-2);
echo $print_str;
아 뭐라고 감사의 말씀을 드려야 할지 어제부터 질문 올려 놓고 수시로 확인하면서 계속 기다렸는데 ..

이번걸로 하니깐 아주 잘되네요 ^^;;

정말 너무나도 감사 드립니다. 뭐라고 감사의 말씀을 드려야 할지 모르겠습니다. ^^;;

정말 고개 숙여 감사의 말씀을 드립니다('')(..)
전체 66,554 |RSS
그누4 질문답변 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT