문제

황:

  • MySQL5.0
  • 2 이블
  • 1-to-많은 부모-자녀 외국인 핵심 관계(A.ID=B.PARENT_ID)

무엇이 필요하다:

  • 선택하는 쿼리를 수익률 세트의 N 번째 어린이(정렬하여 자신의 Id)
  • 또한 필요한 양식에 사용하기 위해 업데이트

예제:

테이블 B

| ID | PARENT_ID |
------------------
|  1 |     1     |
|  2 |     1     |
|  3 |     1     |
|  4 |     2     |
|  5 |     2     |
|  6 |     2     |
|  7 |     2     |
|  8 |     3     |
|  9 |     3     |
| 10 |     4     |

원하는 결과에 대한 설정을 예를 들어,모든 어린이 2

| A.ID | B.ID | B.PARENT_ID |
-----------------------------
|    1 |    2 |           1 |
|    2 |    5 |           2 |
|    3 |    9 |           3 |

아마도와 함께 할 수 있는 뭔가 기능의 그룹에 의해 나가고 있는 거지?

나의 마음은 완전히 붙을 보고 이 문제에 대한 해결책이 절차적으로.모든 도움말 많이 감사합니다.

도움이 되었습니까?

해결책

지 않은 올바른-MySQL 없는 순위 기능이 있습니다.그러나 다행히도,당신이 초기화 및 참조할 수 있도록 변수 코드에 대한 논리를 순위가 있습니다.

이를 반환에 대한 행 2:어린이

SELECT x.aid,
       x.bid,
       x.parent_id
  FROM (SELECT a.id 'aid',
               b.id 'bid',
               b.parent_id,
               CASE WHEN b.parent_id = @parent_id THEN @rownum := @rownum +1 ELSE @rownum := 1 END AS rownum,
               @parent_id := b.parent_id
          FROM TABLE_A a
          JOIN TABLE_B b ON b.parent_id = a.id
          JOIN (SELECT @rownum := 0, @parent_id := NULL) r
      ORDER BY b.parent_id, b.id) x
 WHERE x.rownum = 2

변경 WHERE x.rownum = ? 어떤 N 번째 수준의 어린이를 원합니다.이 ORDER BY 에서 하위는지 확인하는 것이 중요합 순위 나옵니다.

그것은 명확하지 않을 나에게 당신이 사용하는 방법 이해 UPDATE 쿼리-세부 정보를 제공합을 업데이트를 당신의 요구에 맞게 수 있습니다.

다른 팁

MySQL에는이 N 번째 관계를 수행하는 메커니즘이 없습니다. 오라클에는 확장이 있고 아마도 다른 사람들이 있습니다.

맥락은 무엇입니까?

업데이트를 위해 HTML 양식을 작성하는 경우 For Loop으로 데이터를 생성하고 제출시 간단한 업데이트를 위해 ID를 테이블에 넣으십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top