2011-06-14 2 views
0

하루 종일 MySQL의 쿼리를 분류하는 노력했습니다 :(어떤 도움이 좋을 것.MySQL 데이터베이스 도움이

내가 세 가지를 연관 것을 시도하고있다. 메뉴 항목, 메뉴 항목의 그룹과 . ID (고유 한)

내가 (독특한)

0 그룹 테이블 그룹 ID가 함께

메뉴 아이템 테이블 : 권한 수준

그래서 나는 5 개 개의 테이블을 가지고

과 menuIdGroupId 테이블 의 groupId 내가 특권 테이블과 그룹 테이블이 정말에만 목록입니다

idPrivilege

idGroups (독특한)

과 groupsPrivlstable 특권 테이블 privilegeid이

을 menuId와 그룹 및 특권. privilegegroup 테이블과 groupMenu 테이블은 모두 테이블을 조인하여 모든 것을 관련시킵니다.

내가 쿼리 및 없음 작업을 위해 조합을 많이 시도했다 : groupsPrivls이

idGroups idPrivilege 
7   0 
7   1 
1   1 
1   2 
1   4 
13   5 
9   2 
12   1 
1   5 
1   6 
7   2 
7   4 
7   5 
7   6 

하고 menuIDGroupId

SELECT * 
    FROM `menuIdGroupId` 
     JOIN `menuItems` ON menuItems.id = menuIdGroupId.menuId 
     JOIN `groupsPrivls` ON groupsPrivls.idGroups = menuIdGroupId.groupId 
    WHERE groupsPrivls.idPrivilege = '1' 
    LIMIT 0 , 30 

경우

groupId menuId 
1   30 
7   29 
1   31 
1   29 
1   33 
7   33 
4   33 
1   32 
7   30 
7   31 

id  text 
33  button 3  
32  button 2  
31  button 1  
30  Church 
29  About 

결과

입니다
groupId menuId id text   idGroups  idPrivilege 
7   29  29 About Us  7   1 
7   33  33 button 3  7   1 
7   30  30 New to Church 7   1 
7   31  31 button 1  7   1 
1   30  30 New to Church 1   1 
1   31  31 button 1  1   1 
1   29  29 About Us  1   1 
1   33  33 button 3  1   1 
1   32  32 button 2  1   1 

제가 알 수있는 것처럼 중복 된 항목이 생겨서 그 이유를 알 수 없습니다. 나는 그것을 8 개로 설정하지 않았다고 생각합니다. 어떤 도움이라도 좋을 것입니다.

감사

앨런

PS 죄송 형식이 너무 지저분하다!

+0

원하는 출력은 무엇입니까? –

답변

0

여기에 근본적인 문제가 있습니다. 나쁜 모델입니다. 두 모델링에 관심이있는 것은 모두 입니다. 인접한 나무 나 중첩 된 나무를 보도록 권합니다. 이는 메뉴 항목이 내부에 있고 메뉴 항목이 내부에 있고 그룹과 마찬가지로 메뉴 항목이 필요하다고 가정합니다.

이 방법을 피부에 적용하는 또 다른 방법은 복합 재료를 모델링하는 것입니다. 데이터베이스에서 이렇게하려면 상속을 사용하는 것이지만,이 경우 매우 간단합니다.

+0

감사. 나는 mysql이 나무와 합성물에 맞지 않는다고 생각한다. 기본 테이블과 일부 조인을 할 수 있습니다. menuItem이 고유하기 때문에 idPrivilege가 주어진 menuItem을 알아낼 수 있기를 바랬습니다. 나는 PHP에서 그것을 파싱 할 수 있지만 내 관심사는 더 나쁜 소식 일 것입니다 fndemental 결함의 라인입니다. – Alan

+0

대답은 GROUP BY 함수를 사용하는 것 같습니다 – Alan

+0

최종 쿼리를 게시하고 질문에 직접 답하십시오.나는 그것이 당신에게 당신이 사용할 수있는 결과를 줄지는 모르겠지만 어떤 중첩도 할 수 없을 것입니다. – Rob

관련 문제