database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27367 게시물 읽기
No. 27367
아래거 삭제해주시고 이게 정말 질문입니다 ㅡㅡ;
작성자
수연
작성일
2008-02-01 16:02ⓒ
2008-02-01 16:08ⓜ
조회수
2,474

이 게시판에 버그가 있나봐요
게시물 작성도중에 새로고침이 여러번 되더니 이렇게 되어버렸네요 
하여간 다시 질문드립니다.


seq(ai) |   parent_seq(fk)|   depth     |  sort_str 
--------------------------------------------------
1         |                 0     |         0      |  1.
--------------------------------------------------
2         |                 1     |         1      | 1 - 1
--------------------------------------------------
3        |                 0     |         0       |  2.
--------------------------------------------------
4        |                 3     |         1       | 2 - 1
--------------------------------------------------
5        |                 4     |         2       | 2 - 1 - 1
--------------------------------------------------
6        |                 3     |         1       | 2 - 2
--------------------------------------------------


과 같이 입력되어져 있을때 limit를 하는 문제입니다.
부모 자식 관계가 있으므로 페이징을 할때 
x개로 한정지을수 없고

무모(depth 가 0인것)의 갯수는 한정짓되 그의 자식은 전부 가져오는 쿼리문을 원합니다.

예를들어 이런 쿼리를 한방에 만들수 있는 쿼리가 필요합니다.
$query = "select * from table where depth = 0";

$count = 0;
while ($data = sql($query)) {
    $query2 = "select count(*) from where sort_str like concat('".$data['sort_str']."', '%')": // sort_str은 depth가 0일때만 뒤에 .이 붙으므로 제거해주어야 한다
    $count += $data2['count'];
}

$query3 = "select * from table limit 0, $count"l

이런 형태여야 할것 같은데
무모갯수의 limit를 통하여 해당하는 자식까지 한번에 가져올수 없을까요?

5.0 innodb 사용중입니다.

이 글에 대한 댓글이 총 1건 있습니다.

대충 다음과 같이 하면 되지 않을까 싶은데요. *^.^*

SELECT bb.seq, bb.sort_str
FROM (
 SELECT seq, sort_str
 FROM SOMETABLE
 WHERE depth = 0
 ORDER BY SEQ
 LIMIT nnn, mmm
) AS aa
INNER JOIN SOMETABLE as bb ON aa.sort_str = CONCAT( SUBSTRING( bb.sort_str, 1, INSTR( bb.sort_str, '-' ) - 1 ), '.' )
UNION ALL
SELECT * FROM
(
 SELECT seq, sort_str
 FROM SOMETABLE
 WHERE depth = 0
 ORDER BY SEQ
 LIMIT nnn, mmm
) AS cc
ORDER BY sort_str

우욱님이 2008-02-01 20:27에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27373MySQL 테이블 내용 삭제 후 데이터 삽입이.. [1]
유대성
2008-02-04
2888
27372Mysql datetime,timestamp 관련이상한문제
최병욱
2008-02-04
2796
27369libmyodbc3.sl 이 생깁니다.....
김성수
2008-02-03
2578
27367아래거 삭제해주시고 이게 정말 질문입니다 ㅡㅡ; [1]
수연
2008-02-01
2474
27362서버 마이그레이션 작업후 회원 로그인이 안되네요
임두환
2008-02-01
2720
27361요. [1]
강다혁
2008-02-01
2762
27360덤프와 관련된 질문입니다.
강창기
2008-02-01
2614
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다