danchoithuthiet
15-02-2012, 19:18
Mình có hai bảng, một là bảng <b>danhmuc</b> và <b>danhmuc_menu</b>. Trong đó, danhmuc_menu liên kết với danh mục thông qua <b>danhmuc.iddanhmuccap2=danhmuc_menu.iddanhmuc_menu</b>
Cụ thể là:
1. danhmuc_menu(<b><i>iddanhmuc_menu</i></b>,vitridanhmuc_menu,danhmuc_cha). iddanhmuc_menu là khóa chính. Bảng này lưu trữ thông tin của danh mục cấp 1 và cấp 2, với cấp 1 thì danhmuc_cha bằng 0 (có vị trí danh mục là menu hay tintuc), còn danh mục cấp 2 có danh mục danhmuc_cha là những iddanhmuc_menu có danhmuc_cha!=0 và có vị trí danh mục là rỗng.
ví dụ:
(iddanhmuc_menu,vitridanhmuc_menu, danhmuc_cha)
( 13, menu, 0)
( 14, menu, 0)
( 20, NULL , 13)
( 30, NULL, 13)
( 35 , NULL , 14)
2.danhmuc(<b><i>iddanhmuc</i></b>,iddanhmuccap2,idthanhvien). iddanhmuc là khóa chính. Bảng này liên kết với danhmuc_menu thông qua iddanhmuccap2. Và liên kết với danh mục cấp 2
ví dụ
(iddanhmuc, iddanhmuccap2, idthanhvien)
(123, 20, ABC)
(124, 20, ABC)
(125, 30, BCD)
(126, 35, ABC)
Bây giờ, làm như thế nào để có thể lấy tính tổng số iddanhmuc (trong bảng danhmuc) của thành viên ABC có và vitridanhmuc_menu="menu".Mình đã thử viết nhưng không thành công:
Select danhmuc_cha as cha, count(iddanhmuc)
From danhmuc join danhmuc_menu on danhmuc_menu.iddanhmuc_menu=danhmuc.iddanhmuc
Where idthanhvien='ABC' and danhmuc_cha!=0 and (select vitridanhmuc_menu from danhmuc_menu where iddanhmuc_menu=cha)='menu'
Group by danhmuc_cha
hay
Select danhmuc_cha as cha, sum(case (select vitridanhmuc_menu from danhmuc_menu where iddanhmuc_menu=cha) when 'menu' then 1 else 0 end)
From danhmuc join danhmuc_menu on danhmuc_menu.iddanhmuc_menu=danhmuc.iddanhmuc
Where idthanhvien='ABC' and danhmuc_cha!=0
Group by danhmuc_cha
Mong các bạn giúp mình với, mình chịu thui rùi
Cụ thể là:
1. danhmuc_menu(<b><i>iddanhmuc_menu</i></b>,vitridanhmuc_menu,danhmuc_cha). iddanhmuc_menu là khóa chính. Bảng này lưu trữ thông tin của danh mục cấp 1 và cấp 2, với cấp 1 thì danhmuc_cha bằng 0 (có vị trí danh mục là menu hay tintuc), còn danh mục cấp 2 có danh mục danhmuc_cha là những iddanhmuc_menu có danhmuc_cha!=0 và có vị trí danh mục là rỗng.
ví dụ:
(iddanhmuc_menu,vitridanhmuc_menu, danhmuc_cha)
( 13, menu, 0)
( 14, menu, 0)
( 20, NULL , 13)
( 30, NULL, 13)
( 35 , NULL , 14)
2.danhmuc(<b><i>iddanhmuc</i></b>,iddanhmuccap2,idthanhvien). iddanhmuc là khóa chính. Bảng này liên kết với danhmuc_menu thông qua iddanhmuccap2. Và liên kết với danh mục cấp 2
ví dụ
(iddanhmuc, iddanhmuccap2, idthanhvien)
(123, 20, ABC)
(124, 20, ABC)
(125, 30, BCD)
(126, 35, ABC)
Bây giờ, làm như thế nào để có thể lấy tính tổng số iddanhmuc (trong bảng danhmuc) của thành viên ABC có và vitridanhmuc_menu="menu".Mình đã thử viết nhưng không thành công:
Select danhmuc_cha as cha, count(iddanhmuc)
From danhmuc join danhmuc_menu on danhmuc_menu.iddanhmuc_menu=danhmuc.iddanhmuc
Where idthanhvien='ABC' and danhmuc_cha!=0 and (select vitridanhmuc_menu from danhmuc_menu where iddanhmuc_menu=cha)='menu'
Group by danhmuc_cha
hay
Select danhmuc_cha as cha, sum(case (select vitridanhmuc_menu from danhmuc_menu where iddanhmuc_menu=cha) when 'menu' then 1 else 0 end)
From danhmuc join danhmuc_menu on danhmuc_menu.iddanhmuc_menu=danhmuc.iddanhmuc
Where idthanhvien='ABC' and danhmuc_cha!=0
Group by danhmuc_cha
Mong các bạn giúp mình với, mình chịu thui rùi