$sql = "
select
mb_name, mb_9, mb_id
from (select * from {$g5['member_table']}
order by mb_9, mb_id) products_sorted,
(select @pv := '{$main_name}') initialisation
where find_in_set(mb_9, @pv)
and length(@pv := concat(@pv, ',', mb_id))
";
$result = sql_query($sql, true);
while ($row = sql_fetch_array($result)) {
print_r2($row);
mysql 5.x 버전이라 재귀쿼리문을 사용하지 못합니다.
{$main_name} 의 아이디로부터 mb_9가 연결되어 있는 모든 하위리스트를 뽑아내는 소스인데..
10개 라인에 총100명이 있다고 했을때
9개 라인의 90명은 잘 불러오는데 1개 라인에 10명만 불러오지 못합니다.
해당 회원을 삭제, 수정, 재 등록 해봐도... 계속 똑같은 라인만 불러오지 못하는데...
제가 알지 못하는 부분이 있는지 궁금합니다.
불러오지 못하는 라인을 전부 하나하나 체크해봐도.. 상위가 {$main_name}로 연결이 되어 있는데..
애초에 에러가 나면 모르겠는데.. 에러도 안나고 잘 불러오는데..
특정 라인만 못불러오는게... 미치겠습니다. ㅜㅜ
답변 3개 / 댓글 7개
$sql = "
select mb_name, mb_9, mb_id
from {$g5['member_table']}
where instr(mb_9, '{$main_name}')
";
답변에 대한 댓글 3개
이 부분을 조금 더 구체적으로 설명해 주시면 좋을 것 같습니다.
{$main_name} 이 ID 인지 Name 인지 모르겠습니다.
어려운 쿼리를 쓰지 않아도 됩니다. (가능하다면 쉬운 쿼리를 쓰는 것이 좋습니다.)
$sql = "
select mb_name, mb_9, mb_id
from {$g5['member_table']}
where mb_9 in (select mb_9 from {$g5['member_table']} where mb_id = '{$main_name}')
";
or
$sql = "
select mb_name, mb_9, mb_id
from {$g5['member_table']}
where mb_9 in (select mb_9 from {$g5['member_table']} where mb_name = '{$main_name}')
";
답변에 대한 댓글 4개
-> where mb_9 in (select mb_9
mysql8.x 부터 지원하는 CTE를 대신할 수 있는 query인데
잘 안 되는 거 보면 썩 좋은 편은 아닌가 봅니다.
쿼리문 적용해보니...
같은 라인의 (같은 상위 id를 mb_9)를 두고 있는 회원이 나오네요.. ㅠㅠ
위 아래 같습니다.
즉... {$main_name}이 100009 이고 이 회원의 mb_9가 1001 이면
mb_9가 1001 인 회원이 모두 출력이 됩니다. ㅠㅠ
$sql = "
select mb_name, mb_9, mb_id
from {$g5['member_table']}
where mb_9 in (select mb_id from {$g5['member_table']} where mb_id = '{$main_name}')
";
[/code]

간단한 조직도 입니다.
{$main_name} 가 이옥 (아이디 : 1003015) 이였을때
바로 하위는 mb_9가 전부 1003015로 되어 있으며 그 하위도 마찬가지입니다.
위 소스는 최상위 1003015 의 모든 하위를 보여주는 소스인데..
저 빨간 부분만 불러오지 못하는 상황입니다.
답변을 작성하려면 로그인이 필요합니다.
그런데 이번엔 더 많은 라인을 못불러오네요 ㅠㅠ