쿼리문 질문드립니다. 채택완료
</p>
<p> $sum_count = "0";
$sql = "
SELECT a.mb_name AS lev1, b.mb_name as lev2, c.mb_name as lev3, d.mb_name as lev4, e.mb_name as lev5, f.mb_name as lev6, g.mb_name as lev7, h.mb_name as lev7, i.mb_name as lev8
FROM {$g5['member_table']} AS a
LEFT JOIN {$g5['member_table']} AS b ON b.mb_8 = a.mb_name
LEFT JOIN {$g5['member_table']} AS c ON c.mb_8 = b.mb_name
LEFT JOIN {$g5['member_table']} AS d ON d.mb_8 = c.mb_name
LEFT JOIN {$g5['member_table']} AS e ON e.mb_8 = d.mb_name
LEFT JOIN {$g5['member_table']} AS f ON f.mb_8 = e.mb_name
LEFT JOIN {$g5['member_table']} AS g ON g.mb_8 = f.mb_name
LEFT JOIN {$g5['member_table']} AS h ON h.mb_8 = g.mb_name
LEFT JOIN {$g5['member_table']} AS i ON i.mb_8 = h.mb_name
WHERE a.mb_name = '홍길동'
";
$result = sql_query($sql, true);</p>
<p> while ($row = sql_fetch_array($result)) {
$row = array_filter($row);
$sum_count ++;</p>
<p> echo $sum_count;
print_r ($row);
echo "
";</p>
<p> }</p>
<p>
1Array ( [lev1] => 홍길동 [lev2] => 고은경1 )
2Array ( [lev1] => 홍길동 [lev2] => 백의현 [lev3] => 김채안 )
3Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 김옥진 )
4Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 서국영 [lev4] => 김태숙 )
5Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 민윤지 [lev4] => 김임두 [lev5] => 양영란 )
6Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 민윤지 [lev4] => 김평임 )
7Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 민윤지 [lev4] => 홍정애 )
8Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 하영홍 )
9Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 이유라 [lev4] => 김규림2 [lev5] => 사미숙 [lev6] => 문윤희 )
10Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 이유라 [lev4] => 김규림2 [lev5] => 김시경 )
11Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 이유라 [lev4] => 김혜숙1 )
12Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 이유라 [lev4] => 서복순 )
13Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 이유라 [lev4] => 박정애 )
14Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 전미희 [lev4] => 조애경 )
15Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 전미희 [lev4] => 윤기순 )
16Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 전미희 [lev4] => 조금란 [lev5] => 김진환 )
트리구조형은 재귀쿼리가 있다는걸 확인했으나.. 사용가능한 버전이 mysql 8.x부터 가능하더라구요.. 전 5.5를 사용해서 버전 오류가 납니다. ㅠㅠ
해서.. 막코딩으로 하위값까지 가져오는건 했는데 중복값이 제거가 안되네요 (최대 8단계 하위까지 있어서 8단계까지 했고, 빈 값은 제외를 시켰습니다.)
각 이름값이 한번만 나오면 될 거 같은데.. 그게 안됩니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
3년 전
원하시는 것이
4Array ( [lev1] => 홍길동 [lev2] => 김미자 [lev3] => 서국영 [lev4] => 김태숙 )
가 아니라
4Array ( [lev4] => 김태숙 )
이런 식을 원하시는 건가요?
로그인 후 평가할 수 있습니다
답변에 대한 댓글 9개
�
3년 전
�
3년 전
SELECT a.mb_name AS lev1, b.mb_name as lev2, c.mb_name as lev3, d.mb_name as lev4, e.mb_name as lev5, f.mb_name as lev6, g.mb_name as lev7, h.mb_name as lev7, i.mb_name as lev8
FROM {$g5['member_table']} AS a ...
==>
SELECT if( i.mb_name is not null, i.mb_name,
if( h.mb_name is not null, h.mb_name,
if( h.mb_name is not null, h.mb_name,
...
if( b.mb_name is not null, b.mb_name, a.mb_name)
...
)
)
) m_name
FROM {$g5['member_table']} AS a ...
FROM {$g5['member_table']} AS a ...
==>
SELECT if( i.mb_name is not null, i.mb_name,
if( h.mb_name is not null, h.mb_name,
if( h.mb_name is not null, h.mb_name,
...
if( b.mb_name is not null, b.mb_name, a.mb_name)
...
)
)
) m_name
FROM {$g5['member_table']} AS a ...
�
3년 전
[code]
SELECT if( i.mb_name is not null, i.mb_name,
if( h.mb_name is not null, h.mb_name,
if( g.mb_name is not null, g.mb_name,
if( f.mb_name is not null, f.mb_name,
if( e.mb_name is not null, e.mb_name,
if( d.mb_name is not null, d.mb_name,
if( c.mb_name is not null, c.mb_name,
if( b.mb_name is not null, b.mb_name, a.mb_name)
)
)
)
)
)
)
) m_name
FROM {$g5['member_table']} AS a
LEFT JOIN {$g5['member_table']} AS b ON b.mb_8 = a.mb_name
LEFT JOIN {$g5['member_table']} AS c ON c.mb_8 = b.mb_name
LEFT JOIN {$g5['member_table']} AS d ON d.mb_8 = c.mb_name
LEFT JOIN {$g5['member_table']} AS e ON e.mb_8 = d.mb_name
LEFT JOIN {$g5['member_table']} AS f ON f.mb_8 = e.mb_name
LEFT JOIN {$g5['member_table']} AS g ON g.mb_8 = f.mb_name
LEFT JOIN {$g5['member_table']} AS h ON h.mb_8 = g.mb_name
LEFT JOIN {$g5['member_table']} AS i ON i.mb_8 = h.mb_name
WHERE a.mb_name = '홍길동'
[/code]
말씀하신대로 수정했더니..
가장 마지막 트리값만 나오네요 ㅠㅠ
SELECT if( i.mb_name is not null, i.mb_name,
if( h.mb_name is not null, h.mb_name,
if( g.mb_name is not null, g.mb_name,
if( f.mb_name is not null, f.mb_name,
if( e.mb_name is not null, e.mb_name,
if( d.mb_name is not null, d.mb_name,
if( c.mb_name is not null, c.mb_name,
if( b.mb_name is not null, b.mb_name, a.mb_name)
)
)
)
)
)
)
) m_name
FROM {$g5['member_table']} AS a
LEFT JOIN {$g5['member_table']} AS b ON b.mb_8 = a.mb_name
LEFT JOIN {$g5['member_table']} AS c ON c.mb_8 = b.mb_name
LEFT JOIN {$g5['member_table']} AS d ON d.mb_8 = c.mb_name
LEFT JOIN {$g5['member_table']} AS e ON e.mb_8 = d.mb_name
LEFT JOIN {$g5['member_table']} AS f ON f.mb_8 = e.mb_name
LEFT JOIN {$g5['member_table']} AS g ON g.mb_8 = f.mb_name
LEFT JOIN {$g5['member_table']} AS h ON h.mb_8 = g.mb_name
LEFT JOIN {$g5['member_table']} AS i ON i.mb_8 = h.mb_name
WHERE a.mb_name = '홍길동'
[/code]
말씀하신대로 수정했더니..
가장 마지막 트리값만 나오네요 ㅠㅠ
�
3년 전
1Array ( [lev1] => 홍길동 [lev2] => 고은경1 )
2Array ( [lev1] => [lev2] => 백의현 [lev3] => 김채안 )
3Array ( [lev1] => [lev2] => 김미자 [lev3] => 김옥진 )
4Array ( [lev1] => [lev2] => [lev3] => 서국영 [lev4] => 김태숙 )
5Array ( [lev1] => [lev2] => [lev3] => 민윤지 [lev4] => 김임두 [lev5] => 양영란 )
6Array ( [lev1] => [lev2] => [lev3] => [lev4] => 김평임 )
원하는 값인 위와 같습니다...
각 레벨별로 동일값은 한개만 나오게....
2Array ( [lev1] => [lev2] => 백의현 [lev3] => 김채안 )
3Array ( [lev1] => [lev2] => 김미자 [lev3] => 김옥진 )
4Array ( [lev1] => [lev2] => [lev3] => 서국영 [lev4] => 김태숙 )
5Array ( [lev1] => [lev2] => [lev3] => 민윤지 [lev4] => 김임두 [lev5] => 양영란 )
6Array ( [lev1] => [lev2] => [lev3] => [lev4] => 김평임 )
원하는 값인 위와 같습니다...
각 레벨별로 동일값은 한개만 나오게....
�
3년 전
각 array
끝에서 첫째, 둘째만 가져 오면 되는 거 같네요.
$len= count( $array1);
echo $array[ $len-2],' == ', $array1[ $len-1];
끝에서 첫째, 둘째만 가져 오면 되는 거 같네요.
$len= count( $array1);
echo $array[ $len-2],' == ', $array1[ $len-1];
�
3년 전
기초적인 질문 드려서 죄송합니다.
$array1 값은 어디서 가져오나요?
모든 값이 array로 표시되어 있고...
앞의 숫자는 제가 카운트하기 위해 $sum_count를 뿌려둔건데... ㅠㅠ
$array1 값은 어디서 가져오나요?
모든 값이 array로 표시되어 있고...
앞의 숫자는 제가 카운트하기 위해 $sum_count를 뿌려둔건데... ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
백수1995
3년 전
속도는 차치 하고 원하는 결과가 뭔가요?
예시로 주신거에는 중복은 없어 보이는데요 ..
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
�
3년 전
실력이 부족해서.. 말씀하신 쿼리를 8번한다던가
쿼리 8개를 UNION 하라는 말을 잘 모르겠습니다.
힌트나.. 어떻게 하라는 방법을 알려주시면 감사하겠습니다.
쿼리 8개를 UNION 하라는 말을 잘 모르겠습니다.
힌트나.. 어떻게 하라는 방법을 알려주시면 감사하겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
채택
채택
채택
답변대기
채택
채택
채택
답변대기
답변대기
답변대기
채택
채택
채택
채택
채택
채택
채택
답변대기
상위레벨은 1번만 나오면 됩니다.
엑스엠엘님께서 알려주신 CTE가 안되서 무한루프를 돌렸더니..
원하는 값은 대충 나왔는데 중복값이 나와서 또 막히네요..