-- 카테고리 테이블을 작성한다.
DROP TABLE IF EXISTS category ;
CREATE TABLE category(
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
parent INT DEFAULT NULL);
CREATE TABLE category(
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
parent INT DEFAULT NULL);
INSERT INTO category
VALUES(1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2),
(4,'LCD',2),(5,'PLASMA',2),(6,'PORTABLE ELECTRONICS',1),
(7,'MP3 PLAYERS',6),(8,'FLASH',7),
(9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6);
SELECT * FROM category ORDER BY category_id;
-- self 조인을 이용한 DEPTH ( LEVEL ) 구현 쿼리
-- 일반적인 방법이다.
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.category_id
LEFT JOIN category AS t3 ON t3.parent = t2.category_id
LEFT JOIN category AS t4 ON t4.parent = t3.category_id
WHERE t1.name = 'ELECTRONICS';
-- 레벨의 마지막 leaf node 만을 조회
SELECT t1.name FROM
category AS t1 LEFT JOIN category as t2
ON t1.category_id = t2.parent
WHERE t2.category_id IS NULL;
SELECT t1.name FROM
category AS t1 LEFT JOIN category as t2
ON t1.category_id = t2.parent
WHERE t2.category_id IS NULL;
-- 한개의 카테고리에 대해 상위 카테고리들 조회
SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.category_id
LEFT JOIN category AS t3 ON t3.parent = t2.category_id
LEFT JOIN category AS t4 ON t4.parent = t3.category_id
WHERE t1.name = 'ELECTRONICS' AND t4.name = 'FLASH';
-- SELF 조인이 아닌 방법을 이용하기 위한 테이블 생성
DROP TABLE IF EXISTS nested_category ;
CREATE TABLE nested_category (
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
lft INT NOT NULL,
rgt INT NOT NULL
);
INSERT INTO nested_category
VALUES(1,'ELECTRONICS',1,20),(2,'TELEVISIONS',2,9),(3,'TUBE',3,4),
(4,'LCD',5,6),(5,'PLASMA',7,8),(6,'PORTABLE ELECTRONICS',10,19),
(7,'MP3 PLAYERS',11,14),(8,'FLASH',12,13),
(9,'CD PLAYERS',15,16),(10,'2 WAY RADIOS',17,18);
VALUES(1,'ELECTRONICS',1,20),(2,'TELEVISIONS',2,9),(3,'TUBE',3,4),
(4,'LCD',5,6),(5,'PLASMA',7,8),(6,'PORTABLE ELECTRONICS',10,19),
(7,'MP3 PLAYERS',11,14),(8,'FLASH',12,13),
(9,'CD PLAYERS',15,16),(10,'2 WAY RADIOS',17,18);
-- 당 카테고리가 지니고 있는 하위 카테고리 출력
SELECT node.name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND parent.name = 'PORTABLE ELECTRONICS'
ORDER BY node.lft;
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND parent.name = 'PORTABLE ELECTRONICS'
ORDER BY node.lft;
-- 모든 마지막 레벨 조회
SELECT name
FROM nested_category
WHERE rgt = lft + 1;
SELECT name
FROM nested_category
WHERE rgt = lft + 1;
-- 해당 카테고리가 소속되는 상위 카테고리 출력
SELECT parent.name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'FLASH'
ORDER BY parent.lft;
SELECT parent.name
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.name = 'FLASH'
ORDER BY parent.lft;
-- 카테고리별 TREE 의 레벨 출력
SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft;
SELECT node.name, (COUNT(parent.name) - 1) AS depth
FROM nested_category AS node,
nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
GROUP BY node.name
ORDER BY node.lft;
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 4330 |
aequum
|
13년 전 | 833 | |
| 4329 | 13년 전 | 1051 | ||
| 4328 |
aequum
|
13년 전 | 1331 | |
| 4327 |
aequum
|
13년 전 | 1395 | |
| 4326 | 13년 전 | 785 | ||
| 4325 |
aequum
|
13년 전 | 933 | |
| 4324 |
aequum
|
13년 전 | 1655 | |
| 4323 |
aequum
|
13년 전 | 2744 | |
| 4322 |
aequum
|
13년 전 | 1999 | |
| 4321 |
aequum
|
13년 전 | 2062 | |
| 4320 |
aequum
|
13년 전 | 1464 | |
| 4319 |
aequum
|
13년 전 | 1268 | |
| 4318 |
aequum
|
13년 전 | 1169 | |
| 4317 |
aequum
|
13년 전 | 951 | |
| 4316 | 13년 전 | 421 | ||
| 4315 |
Raincommunication
|
13년 전 | 1338 | |
| 4314 |
aequum
|
13년 전 | 4448 | |
| 4313 | 13년 전 | 1306 | ||
| 4312 |
|
13년 전 | 1073 | |
| 4311 | 13년 전 | 567 | ||
| 4310 |
후라보노보노
|
13년 전 | 796 | |
| 4309 | 13년 전 | 630 | ||
| 4308 |
levin
|
13년 전 | 510 | |
| 4307 | 13년 전 | 584 | ||
| 4306 | 13년 전 | 566 | ||
| 4305 | 13년 전 | 504 | ||
| 4304 | 13년 전 | 1379 | ||
| 4303 | 13년 전 | 709 | ||
| 4302 | 13년 전 | 553 | ||
| 4301 | 13년 전 | 533 | ||
| 4300 |
내꿈은대통령
|
13년 전 | 585 | |
| 4299 | 13년 전 | 877 | ||
| 4298 | 13년 전 | 786 | ||
| 4297 | 13년 전 | 1377 | ||
| 4296 | 13년 전 | 993 | ||
| 4295 |
원시인교주
|
13년 전 | 3454 | |
| 4294 | 13년 전 | 668 | ||
| 4293 | 13년 전 | 1221 | ||
| 4292 | 13년 전 | 964 | ||
| 4291 | 13년 전 | 2694 | ||
| 4290 |
Kanzi
|
13년 전 | 2304 | |
| 4289 |
393939
|
13년 전 | 517 | |
| 4288 | 13년 전 | 1578 | ||
| 4287 |
393939
|
13년 전 | 522 | |
| 4286 |
alenjoe
|
13년 전 | 2319 | |
| 4285 |
alenjoe
|
13년 전 | 1866 | |
| 4284 | 13년 전 | 476 | ||
| 4283 |
|
13년 전 | 5566 | |
| 4282 | 13년 전 | 832 | ||
| 4281 | 13년 전 | 1340 | ||
| 4280 | 13년 전 | 1155 | ||
| 4279 | 13년 전 | 1199 | ||
| 4278 | 13년 전 | 1078 | ||
| 4277 | 13년 전 | 1090 | ||
| 4276 |
|
13년 전 | 946 | |
| 4275 |
스누피사랑
|
13년 전 | 1279 | |
| 4274 |
스누피사랑
|
13년 전 | 1661 | |
| 4273 |
스누피사랑
|
13년 전 | 675 | |
| 4272 |
스누피사랑
|
13년 전 | 1049 | |
| 4271 |
한번잘해보자
|
13년 전 | 2094 | |
| 4270 | 13년 전 | 1950 | ||
| 4269 | 13년 전 | 900 | ||
| 4268 |
mydie
|
13년 전 | 1392 | |
| 4267 | 13년 전 | 3877 | ||
| 4266 | 13년 전 | 614 | ||
| 4265 |
|
13년 전 | 2599 | |
| 4264 |
onlymilk74
|
14년 전 | 1376 | |
| 4263 | 14년 전 | 1809 | ||
| 4262 | 14년 전 | 1023 | ||
| 4261 | 14년 전 | 804 | ||
| 4260 |
|
14년 전 | 805 | |
| 4259 | 14년 전 | 943 | ||
| 4258 |
|
14년 전 | 1030 | |
| 4257 |
|
14년 전 | 1918 | |
| 4256 | 14년 전 | 3154 | ||
| 4255 | 14년 전 | 2193 | ||
| 4254 | 14년 전 | 909 | ||
| 4253 | 14년 전 | 1517 | ||
| 4252 |
|
14년 전 | 1755 | |
| 4251 | 14년 전 | 565 | ||
| 4250 | 14년 전 | 1801 | ||
| 4249 |
|
14년 전 | 3042 | |
| 4248 | 14년 전 | 1714 | ||
| 4247 | 14년 전 | 2651 | ||
| 4246 | 14년 전 | 3958 | ||
| 4245 | 14년 전 | 3992 | ||
| 4244 |
아이피마스터
|
14년 전 | 2395 | |
| 4243 |
|
14년 전 | 837 | |
| 4242 | 14년 전 | 1130 | ||
| 4241 | 14년 전 | 3950 | ||
| 4240 |
Kanzi
|
14년 전 | 2272 | |
| 4239 |
Kanzi
|
14년 전 | 1420 | |
| 4238 | 14년 전 | 3789 | ||
| 4237 | 14년 전 | 2470 | ||
| 4236 | 14년 전 | 559 | ||
| 4235 | 14년 전 | 2458 | ||
| 4234 | 14년 전 | 613 | ||
| 4233 |
|
14년 전 | 857 | |
| 4232 |
|
14년 전 | 1682 | |
| 4231 |
|
14년 전 | 1299 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기