2013-09-06 3 views
1

에서 가입 조회하는 헤더를 추가 : 같은 결과mysql을 - 나는 지금까지 다음 한

SELECT D.department AS dept, C.name AS subdept 
    FROM (SELECT DISTINCT department FROM classes WHERE web != 0 ORDER BY department,name LIMIT 5) D 
    LEFT JOIN classes C ON (C.department = D.department) 
    ORDER BY D.department,C.name 

:

+------+-------------------------------+ 
| dept | subdept      | 
+------+-------------------------------+ 
| BOOK | CHILDRENS BOOKS    | 
| BOOK | DVD'S       | 
| CLOT | ACCESSORIES     | 
| CLOT | APRONS      | 
| FEED | BIBS & BURP CLOTHS   | 
| FEED | BOTTLE & FOOD WARMERS   | 
+------+-------------------------------+ 

무엇 임려고하면위한 '헤더'입니다 널 subdept 값과 같은 각 부서 :

+------+-------------------------------+ 
| dept | subdept      | 
+------+-------------------------------+ 
| BOOK | null       | 
| BOOK | CHILDRENS BOOKS    | 
| BOOK | DVD'S       | 
| CLOT | null       |  
| CLOT | ACCESSORIES     | 
| CLOT | APRONS      | 
| FEED | null       |  
| FEED | BIBS & BURP CLOTHS   | 
| FEED | BOTTLE & FOOD WARMERS   | 
+------+-------------------------------+ 

테이블의 구조 : 부서 테이블은 클래스 ID를 기본 키를 가지고 부서 필드를 외래 키로 사용합니다.

Departmens : id | 이름 (부서) 수업 : 부서 | DanfromGermany 나를 보여 것을 바탕으로

(클래스의) 이름 나 있습니다

SELECT D.department AS dept, C.name AS subdept 
FROM 
(SELECT DISTINCT department FROM classes WHERE web != 0 ORDER BY department,name LIMIT 5) D 
LEFT JOIN classes C ON (C.department = D.department) 
GROUP BY D.department, C.name WITH ROLLUP 

지금 준다 :

+--------+-------------------------------+ 
| dept | subdept      | 
+--------+-------------------------------+ 
| BOOK | CHILDRENS BOOKS    | 
| BOOK | DVD'S       | 
| BOOK | [NULL]      | 
| CLOT | ACCESSORIES     | 
| CLOT | APRONS      | 
| CLOT | [NULL]      | 
| FEED | BIBS & BURP CLOTHS   | 
| FEED | BOTTLE & FOOD WARMERS   | 
| FEED | [NULL]      | 
| GEAR | BOOSTER CAR SEATS    | 
| GEAR | CAR SEAT ACCESSORIES   | 
| GEAR | [NULL]      | 
| GIFT | BABY BASKETS & DIAPER CAKES | 
| GIFT | BANKS       | 
| GIFT | [NULL]      | 
| [NULL] | [NULL]      | 
+--------+-------------------------------+ 

OK 최종 편집 : 그것은에 하위 쿼리에 의해 작동

주문순 이용자 :

답변

1

GROUP BY 절이 이되도록 쿼리를 변경 한 다음 WITH ROLLUP을 사용하십시오. http://dev.mysql.com/doc/refman/5.1/en/group-by-modifiers.html

또는 같은

뭔가 "롤업 MySQL과에 의해 GROUP"에 대한 (검증되지 않은) 구글 :

해당 페이지의 중간에보기는 독일어에서

SELECT D.department AS dept, C.name AS subdept 
FROM 
(SELECT DISTINCT department FROM classes WHERE web != 0 ORDER BY department,name LIMIT 5) D 
LEFT JOIN classes C ON (C.department = D.department) 
GROUP BY dept, subdept WITH ROLLUP 
ORDER BY D.department,C.name 
+0

OH NOOO에게 ! 확실히 이것을 체크 아웃 할 것입니다. 감사! –

+0

약간의 수정 작업을했는데 문제는 ORDER BY가 오류를 일으키고 하위 순서를 뒤집을 필요가 있다는 것입니다. –

+0

링크를'/ en /', 미안, 바보 같은 기본 언어로 변경했습니다. 이렇게 변경하십시오 :'ORDER BY dept, subdept' – DanFromGermany