무식하게 짠 쿼리문좀 봐주세요 채택완료
예서제이
3년 전
조회 991
</p>
<p>select a.mb_id, a.wr_name, b.mb_name, a.wr_29, b.mb_level, b.mb_1, count(*) as cnt , sum(a.wr_23) as tot
from {$write_table} a
inner join (
select mb_id,
mb_name,
mb_level,
mb_1,
mb_13
from {$g5['member_table']}
where mb_id='{$main_id}'
union
select
p1.mb_id,
p1.mb_name,
p1.mb_level,
p1.mb_1,
p1.mb_13
from {$g5['member_table']} p1
left join {$g5['member_table']} p2 on p2.mb_id = p1.mb_9
left join {$g5['member_table']} p3 on p3.mb_id = p2.mb_9
left join {$g5['member_table']} p4 on p4.mb_id = p3.mb_9
left join {$g5['member_table']} p5 on p5.mb_id = p4.mb_9
left join {$g5['member_table']} p6 on p6.mb_id = p5.mb_9
left join {$g5['member_table']} p7 on p6.mb_id = p6.mb_9
left join {$g5['member_table']} p8 on p6.mb_id = p7.mb_9
left join {$g5['member_table']} p9 on p6.mb_id = p8.mb_9
where '{$main_id}' in (p1.mb_9, p2.mb_9, p3.mb_9, p4.mb_9, p5.mb_9, p6.mb_9, p7.mb_9, p8.mb_9, p9.mb_9)
) as b on a.mb_id = b.mb_id
group by mb_id</p>
<p>
mysql 5라서 재귀쿼리가 안됩니다.
mb_9를 기준으로 하위 인원을 뽑아오는데
여기에 depth를 넣고 싶습니다.
기준이 되는 mb_id를 0을 기준으로 하위로 1, 2, 3... 이렇게 넣어서 소트를 시키고 싶은데
depth를 어떻게 넣어야 할지 모르겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
3년 전
역시 무식한 답변을 드리자면
if( p2.mb_id is null, 1, if( p3.mb_id is null, 2, if( p4.mb_id is null, 3, ...)))
로그인 후 평가할 수 있습니다
답변에 대한 댓글 6개
�
예서제이
3년 전
이 구문을 어디에 넣어야 하나요?
�
엑스엠엘
3년 전
from {$g5['member_table']} p1
left join {$g5['member_table']} p2 on p2.mb_id = p1.mb_9
left join {$g5['member_table']} p3 on p3.mb_id = p2.mb_9
..
left join {$g5['member_table']} p9 on p6.mb_id = p8.mb_9
where '{$main_id}' in (p1.mb_9, p2.mb_9, p3.mb_9, p4.mb_9, p5.mb_9, p6.mb_9, p7.mb_9, p8.mb_9, p9.mb_9)
) as b on a.mb_id = b.mb_id
조인 조건에 안 쓰고
where에 쓰면 left 조인은 의미가 없습니다.
left join {$g5['member_table']} p2 on p2.mb_id = p1.mb_9
left join {$g5['member_table']} p3 on p3.mb_id = p2.mb_9
..
left join {$g5['member_table']} p9 on p6.mb_id = p8.mb_9
where '{$main_id}' in (p1.mb_9, p2.mb_9, p3.mb_9, p4.mb_9, p5.mb_9, p6.mb_9, p7.mb_9, p8.mb_9, p9.mb_9)
) as b on a.mb_id = b.mb_id
조인 조건에 안 쓰고
where에 쓰면 left 조인은 의미가 없습니다.
�
엑스엠엘
3년 전
다시 전제 query문을 살펴보니 좀 이상하세요.
https://stackoverflow.com/questions/46462785/hierarchical-get-all-parents-without-using-cte-query
https://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
한번 검토해 보세요.
https://stackoverflow.com/questions/46462785/hierarchical-get-all-parents-without-using-cte-query
https://stackoverflow.com/questions/20215744/how-to-create-a-mysql-hierarchical-recursive-query
한번 검토해 보세요.
�
예서제이
3년 전
이것저것 쿼리문을 몇가지 해봤는데
위의 쿼리문이 가장 정확해서 사용중입니다.
지금도 여기저기 찾고 있기는 한데..
우선은 depth를 찍고 depth 로 소트 시키라고 해서.....
힘없는 초보개발자는 슬픕니다.
위의 쿼리문이 가장 정확해서 사용중입니다.
지금도 여기저기 찾고 있기는 한데..
우선은 depth를 찍고 depth 로 소트 시키라고 해서.....
힘없는 초보개발자는 슬픕니다.
�
예서제이
3년 전
[code]
select
p1.mb_id,
p1.mb_name,
p1.mb_level,
p1.mb_1,
p1.mb_13,
if( p2.mb_id is null, 1, if( p3.mb_id is null, 2, if( p4.mb_id is null, 3, if( p5.mb_id is null, 4, if( p6.mb_id is null, 5, if( p7.mb_id is null, 6, if( p8.mb_id is null, 7, if( p9.mb_id is null, 8)))))))) depth
from {$g5['member_table']} p1
left join {$g5['member_table']} p2 on p2.mb_id = p1.mb_9
left join {$g5['member_table']} p3 on p3.mb_id = p2.mb_9
left join {$g5['member_table']} p4 on p4.mb_id = p3.mb_9
left join {$g5['member_table']} p5 on p5.mb_id = p4.mb_9
left join {$g5['member_table']} p6 on p6.mb_id = p5.mb_9
left join {$g5['member_table']} p7 on p6.mb_id = p6.mb_9
left join {$g5['member_table']} p8 on p6.mb_id = p7.mb_9
left join {$g5['member_table']} p9 on p6.mb_id = p8.mb_9
where '{$main_name}' in (p1.mb_9, p2.mb_9, p3.mb_9, p4.mb_9, p5.mb_9, p6.mb_9, p7.mb_9, p8.mb_9, p9.mb_9)
) as b on a.mb_id = b.mb_id
[/code]
에러가 나네요
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 ')))))))) depth from g5_member p1 left join g5_member p2 on p2.mb_id' at line 18
ㅠㅠ
select
p1.mb_id,
p1.mb_name,
p1.mb_level,
p1.mb_1,
p1.mb_13,
if( p2.mb_id is null, 1, if( p3.mb_id is null, 2, if( p4.mb_id is null, 3, if( p5.mb_id is null, 4, if( p6.mb_id is null, 5, if( p7.mb_id is null, 6, if( p8.mb_id is null, 7, if( p9.mb_id is null, 8)))))))) depth
from {$g5['member_table']} p1
left join {$g5['member_table']} p2 on p2.mb_id = p1.mb_9
left join {$g5['member_table']} p3 on p3.mb_id = p2.mb_9
left join {$g5['member_table']} p4 on p4.mb_id = p3.mb_9
left join {$g5['member_table']} p5 on p5.mb_id = p4.mb_9
left join {$g5['member_table']} p6 on p6.mb_id = p5.mb_9
left join {$g5['member_table']} p7 on p6.mb_id = p6.mb_9
left join {$g5['member_table']} p8 on p6.mb_id = p7.mb_9
left join {$g5['member_table']} p9 on p6.mb_id = p8.mb_9
where '{$main_name}' in (p1.mb_9, p2.mb_9, p3.mb_9, p4.mb_9, p5.mb_9, p6.mb_9, p7.mb_9, p8.mb_9, p9.mb_9)
) as b on a.mb_id = b.mb_id
[/code]
에러가 나네요
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 ')))))))) depth from g5_member p1 left join g5_member p2 on p2.mb_id' at line 18
ㅠㅠ
�
엑스엠엘
3년 전
괄호 갯수가 안 맞는 거 아닐까요?
아니면
.. , if( p9.mb_id is null, 8, 100 )))))))) depth
from {$g5['member_table']} p1 ...
숫자 하나를 더 써 줘야 할 겁니다.
아니면
.. , if( p9.mb_id is null, 8, 100 )))))))) depth
from {$g5['member_table']} p1 ...
숫자 하나를 더 써 줘야 할 겁니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인