작업을 진행하다 도무지 답이 안나와서 질문드립니다.
프로그램 기능은
A 가 B를 초대하고, B가 C를 초대하고, C가 D를 초대하는 프로그램입니다.
즉, A1,A2,A3.... ---> B1,B2,B3.... ----> C1,C2,C3.... 식으로 피라미드처럼 초대하는 프로그램입니다.
테이블을 계층식으로 하면 되겠다 싶어서
create table AAAA{
seq_no int,
name varchar(30),
ref int,
step int,
stage int,
parent int,
phone,
writer varchar(30)
)
식으로 구성해서
select * from AAAA order by net_ref desc,net_step,net_stage 로 조회하면 전체는 이상없이 나옵니다.
그런데 B2 이 로그인해서 자기 하위단을 보려고 하면 다른 것도 보입니다. (즉, B2 하위단만 보여야하는데 B1,B3 하위단도 보여요)
또 하나는 각각의 name 은 자기 하위단위 총 수를 알아야 하는데
이것도 최고상단계층은 잘 보이는데 하위계츨으로 가면 하위가 0인데도 다른 계층의 하위수가 보입니다.
(즉, B1 의 하위가 총 0개, B2 의 하위가 총 3개라면 B1 도 하위가 3개로 보이네요)
조회하는 쿼리
SELECT * FROM AAAA WHERE ref in (select ref from AAAA where writer= 'knulp2')
AND step > 0 AND stage >= '1' ==> 이 라인은 최고 계층이 아닐떄 추가됩니다
ORDER BY ref desc, step, stage
하위계층 수를 구하는 쿼리
select count(*) from AAAA where parent in (select parent from AAAA where ref='2' and stage > '1')
식으로 했는데 최고 계층에는 적용이 잘 되나 하위 계층은 안되네요..
두 쿼리의 수정 및 도움 부탁드립니다.
테이블이 바뀌어야 한다면 그것도 부탁드려요
감사합니다.