text:
Bạn đang ở đây
xem hinh anh xe novo 6 moi
NotesNo body post here, You can post first post here.! Click here to post
- »» xe nouvo 6
- »» hinh anh xe novo6
18 Tháng Năm 2012 ... Trung Tâm Sơn Sửa Bảo Trì Xe Tay Ga ANH TUẤN Kính chúc quý khách năm mới ... Phuộc HAYATE - dành cho xe Air Blade, Novo 1-2-3 (gắn vào xe rất đẹp- bền, .... Gửi bởi mom_nai Xem bài viết ... 23-10-2012, 10:15 PM #6 ... biết pro sớm thì tốt biết mấy tình hình là con ab thái của mình mới mua củ lại ......Trung tâm sửa chữa bảo trì xe tay ga -- Uy tín, Chất Lượng, Giá tốt ... Read more
NOUVO GP : 39.200.000đ.
Hình ảnh:
Hình ảnh chi tiết Nouvo SX GP!
Giá : Xong ( Xe leng keng xì
hình ảnh thật của xe : ít bữa
Thông tin hình ảnh chi tiết .
18 Tháng Năm 2012 ... Trung Tâm Sơn Sửa Bảo Trì Xe Tay Ga ANH TUẤN Kính chúc quý khách năm mới ... Phuộc HAYATE - dành cho xe Air Blade, Novo 1-2-3 (gắn vào xe rất đẹp- bền, .... Gửi bởi mom_nai Xem bài viết ... 23-10-2012, 10:15 PM #6 ... biết pro sớm thì tốt biết mấy tình hình là con ab thái của mình mới mua củ lại ...
18 Tháng 4 2014 ... Close đã nghĩ Yamaha ngay 2-5-2014 Thanks tất cả anh em 5giay. ... Mặc định. nếu được thì báo giá hộ mình bộ tem RC mới của Nouvo Sx nhé, giá từng món. Thank bạn nhiều! ... Ngoại tuyến. Thành Viên Cấp 6 nguyenngocduy's Avatar .... Xem website tốt nhất ở chế độ màn hình 1024 x 768. Cty TNHH ...
5 ngày trước ... Thành Viên Cấp 6 hero6x6's Avatar ... cái này chỉ cần khéo tay chút + chịu khó chạy lên tân thành kiếm co thì mọi thứ đều ok. ... Gửi bởi thaidesign Xem bài viết ... Nouvo 3 có ng vẫn còn đam mê vì kiểu dáng, mua xe nát về làm lại cũng ok, như bác .... Xem website tốt nhất ở chế độ màn hình 1024 x 768.
Xe máy - xe đạp - Xe gắn máy 2 bánh, môtô Xe đạp: MTB,Touring,road,city ... ... nouvo 5 cuoi 2013, tem moi ... l Honda l DYLAN 150 đen cam xe dọn đẹp vô nhiều đồ chơi,giá cực tốt 29tr [CÓ HÌNH THẬT] .... Trả lời: 6; Xem: 762; Đánh giá0 / 5.
16 Tháng Sáu 2012 ... Bao tex 1 đổi 1 trong vòng 1 tuần - Bảo hành Từ 6 tháng tới 1 năm cho tất .... Hỗ trợ Audio/video , web video , game, chát, nghe nhạc , xem phim , wife ... Ainol cũng được thị trường biết đến với dòng máy tính bảng Novo, mới ...
20 Tháng 2 2010 ... Đánh bóng cổ pô lại như mới:40-80k (tùy loại xe và chỉ nhận cổ inox làm ... Fải nói cha nội này pô đúng kĩ lun...đợi "tê ** lê" lun xém xíu trễ h đón con. ... tình hình là bữa thứ 6 đc anh thái ròm nhà mình hẹn 2g đến mở cổ pô, a thái .... l** R6 là l** cho xe đua Yamaha R6 dạng chuyên nghiệp 4 xi-lanh nên ...
7 Tháng Mười 2010 ... Ace nào muốn tham khảo thêm nhiều hình ảnh nữa thì xem thêm tạihttp://www. cuncon1202.net/2010/10/ph...uy-tin-va.html ) .... -Cặp phuộc Nouvo 4(Zin theo xe mới 99%) 500k -Đèn fa attila còn .... 14-06-2012, 04:54 PM #6.
4 Tháng Giêng 2012 ... Máy tính bảng NoVo 7 basic mới 100% giá khuyến mãi... 2,9tr...>>> ID Topic .... Mới 100% full box. Bảo hành 6 tháng ... Thiết kế đặt sắc , kiểu dáng hình xe hơi. Đèn quang xung ... Gửi bởi cskthanhtra Xem bài viết. phụ bạn nè.
Sau 1 thời gian con cò bị lệch... đi nặng ga, hao xăng, khi đi cứ nghe rè rè(cái này rất bực) MÌNH từng đi chỉnh cho 2 cái xe của nhà, 1 nouvo, 1 jupiter =>> kết quả nhẹ đi nhiều, bớt hao xăng, ko còn nghe tiếng rè rè nữa. ... Gửi bởi 7STORE Xem bài viết. cái này sài cũng ổn lắm bạn , mình sài qua lun rùi , GL5 độ nhớt 140w , ê cho mình hỏi bên anh tuấn morto toàn nhớt máy là castrol scooter ko phải ko bạn. bữa nay mình thấy có nhớt thái, havoline, toàn thẩy SH, PS ...
Close đã nghĩ Yamaha ngay 2-5-2014 Thanks tất cả anh em 5giay. ... Mặc định. nếu được thì báo giá hộ mình bộ tem RC mới của Nouvo Sx nhé, giá từng món. Thank bạn nhiều! 18-04-2014, 01:57 PM #3 · nguyenngocduy. nguyenngocduy Đang Ngoại tuyến. Thành Viên Cấp 6 nguyenngocduy's Avatar .... Xem website tốt nhất ở chế độ màn hình 1024 x 768. Cty TNHH Tin Học & Thương Mại Nhật Nguyệt Trụ sở: 114 Đường số 2 Cư Xá Đô Thành F.4,Q.3,Tp.HCM
Có thể chỉnh tốc độ chóp của đèn. - Dùng được cho bóng zin và bóng led. - Lắp đơn giản là cấm thay cho chóp zin và 1 dây nối mas. - Dùng được cho mọi loại xe.  ... Loại 2 màu từ N-1-2-3-4-5. Loại có N thì ko có số 6 - Nếu ae nào muốn có số 6 thì dùng loại 1 màu đỏ 0-1-2-3-4-5-6 thì ko có N thay vào N là số 0. - Đặc biệt có jack sẵn cho anh em cấm vào jack zin thôi, ko cần chế cháo. + Loại 1 màu: Giá 50k ...
một vài hình ảnh các xe đã làm ở tiệm Huy làm lại chảo ex piston 62 waversx mới làm nhẹ nguyen kit lòng uma pison62 của bạn ở tỉnh sau khi đã lên xe kèm theo pô DBS cho có tiếng nói hihi làm lại nồi cho wave rsx 110 do bạn ở Q10 .... thannk bạn mình làm lấy uy tín làm đầu mà.dĩ nhiên xe khách quen thì có nhiều ưu đãi hơn rồi.xe bạn bảo hành 6 tháng đó.nên cứ yên tâm chạy nha.có vấn đề gì chạy qua mình kiểm tra lại cho nha.ah2 mà nhớ trong 6 tháng chạy ...
_Hình: -Góc kích đúng theo góc kích của Dòng xe Yamaha: Si, Ju, Novo,Luvias, Exciter 2011, exciter 2012, FZ-16...Không gây róc ... Tay thắng 6 số,lòng Nova,đầu đèn lớn,ĐH,IC Ex,JuR mua ĐH +đầu nhỏ+gắp nhôm Ex2k10 !!! ID Topic : ... Chóa đèn trước 2k11 GP mới <90%,nguyên cụm pha đèn,giá 200k ( cái này còn keng chóa trước Ex2k11 chắc ai cũng biết nên mình khỏi đăng hình nhé) .... Tag của Chủ đề này. None. Xem Nhóm Tag. Tìm bài viết theo ID Topic ...
Cho mình hỏi Nouvo 3 thay nhớt máy và nhớt láp hiệu nào là ok . Thanks. ... Thành Viên Cấp 6 wuan111's Avatar ... shell scooter, máy êm, nhẹ xe, tuy ko bốc = castrol ... Xem website tốt nhất ở chế độ màn hình 1024 x 768.
Mình để lại cho anh em giá Đã Bán. (Đầy Đủ Phụ Kiện). Máy mới mua ngày 31/10/2012 bên Cửa Hàng Tận Tâm (61 - Hùng Vương - Bảo Hành 12 Tháng) - Đã dán keo kín mít, ko trầy chổ nào hết, màn hình sáng láng, pin ...
-Công suất phát lửa ra IC đạt 260V (IC zin 220V) Lửa mạnh,đốt sạch nhiên liệu, tăng khả năng sinh công của máy, Giúp xe bạn vận hành nhẹ nhàng và êm ái hơn mà ko cần gắn thêm các linh kiện phụ trợ. -Đây là dòng ... Chấp nhận test so sánh chất lượng, tính năng IC với các sản phẩm đồng giá nếu kém hơn xin tặng anh e con IC chạy chơi, Nếu ko fai IC zin theo hãng YAMAHA cho a e dẹp tiệm mình lun nek. .... Xem website tốt nhất ở chế độ màn hình 1024 x 768.

markdown:
## Bạn đang ở đây
# xem hinh anh xe novo 6 moi
## NotesNo body post here, You can post first post here.!
[Click here to post](/n/v/1849281)
- »»
[xe nouvo 6](/v/xe-nouvo-6/22042)
- »»
[hinh anh xe novo6](/v/hinh-anh-xe-novo6/40270) ![ những hình độ xe nouvo lx cực độc](http://duthuyenhalong.vn/uploads/news/2011/1311692167-1-thue-xe-co-man-nhan-voi-yamaha-nouvo-lx-do-toi-ben-Yamaha%20Nouvo%20LX%20%E2%80%9C%C4%91%E1%BB%99%20t%E1%BB%9Bi%20b%E1%BA%BFn%E2%80%9D.jpg)
![ những hình độ xe nouvo lx cực độc](http://duthuyenhalong.vn/uploads/news/2011/1311692167-1-thue-xe-co-man-nhan-voi-yamaha-nouvo-lx-do-toi-ben-Yamaha%20Nouvo%20LX%20%E2%80%9C%C4%91%E1%BB%99%20t%E1%BB%9Bi%20b%E1%BA%BFn%E2%80%9D.jpg)
18 Tháng Năm 2012
**...** Trung Tâm Sơn Sửa Bảo Trì **Xe** Tay Ga **ANH** TUẤN Kính chúc quý khách năm
**mới** ... Phuộc HAYATE - dành cho **xe** Air Blade, **Novo** 1-2-3 (gắn vào **xe** rất đẹp-
bền, .... Gửi bởi mom_nai **Xem** bài viết ... 23-10-2012, 10:15 PM # **6** ... biết pro
sớm thì tốt biết mấy tình **hình** là con ab thái của mình **mới** mua củ lại ......Trung tâm sửa chữa bảo trì xe tay ga -- Uy tín, Chất Lượng, Giá tốt ... [ Read more](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS81MDQ0OTUzLXRydW5nLXRhbS1zdWEtY2h1YS1iYW8tdHJpLXhlLXRheS1nYS11eS10aW4tY2hhdC1sdW9uZy1naWEtdG90LWFuaC10dWFuLmh0bWw=&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) ![ Yamaha - NOUVO SX giá HOTTTTTT chỉ có tại YAMAHA ĐINH ANH!!!!!!](http://t1.gstatic.com/images?q=tbn:ANd9GcSbpuUZHdLUJKRfbNmAMcXIOQG6VJZbhN0HJxyqJ_YEKOujL6sSnIrjwA)
**Yamaha**- **NOUVO**SX **giá**HOTTTTTT chỉ có tại **YAMAHA**ĐINH **ANH**!!!!!! **NOUVO** GP : 39.200.000đ.
![ Rò rỉ thông tin Nouvo LX Fi](http://t0.gstatic.com/images?q=tbn:ANd9GcRvcJ4XEGJoS74FGJ5kqc9vDiB1OB8ySVujwg3K_rZ0LZ-5Lp22xTl8FG9h)
[Rò rỉ thông tin](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi94ZS1tYXkteGUtZGFwLzM4MDA4NDYtcm8tcmktdGhvbmctdGluLW5vdXZvLWx4LWZpLmh0bWw=&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **Nouvo**LX Fi **Hình ảnh**:
![ Hình ảnh chi tiết Nouvo SX GP!!!](http://t0.gstatic.com/images?q=tbn:ANd9GcQE3slB8bZIbvedtHPWkFMDZsG0tQZhsFKX_qVeuTDnpH0qbWhuffB_1DQ)
**Hình ảnh**chi tiết **Nouvo**SX GP!!! **Hình ảnh** chi tiết **Nouvo** SX GP!
![ Yamaha - Nouvo 5 Fi Đỏ Đen 2012 Xe Đẹp Leng Keng Giá Tốt Mời Hốt ! Xem](http://t2.gstatic.com/images?q=tbn:ANd9GcTgSA7N3F5LoNRBvKDCvdGRLslXkUdy72oI_yPFAzMRAgsNftMhonGw0C0)
**Yamaha**- **Nouvo**5 Fi Đỏ Đen 2012 **Xe**Đẹp Leng Keng **Giá**Tốt **Mời**Hốt ! **Xem** **Giá** : Xong ( **Xe** leng keng xì
![ Yamaha - cần bán Yamaha Nouvo LX đời 2009 [màu Trắng-Đen-Xám , zin ...](http://t1.gstatic.com/images?q=tbn:ANd9GcRVSBqZExVRgEd8qXhu0sxfA0L_65nrYpBo8rdB6W4Z2EUv-amVr1p9zo4)
**Yamaha**- cần bán **Yamaha Nouvo**LX đời 2009 [màu Trắng-Đen-Xám , zin **...** **hình ảnh** thật của **xe** : ít bữa
![ Hot hot..Exciter GP màu mới 2012 sẽ ra mắt vào ngày 6/](http://t1.gstatic.com/images?q=tbn:ANd9GcS-7vrIHSWHIP-8dgCa_-5yqrUX8hmmbWTHzImJ2FxjDspz4eBicTdyj48)
[Hot hot..Exciter GP màu](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9jaHV5ZW4tdHJvLXhlLW1heS81ODQyOTg5LWhvdC1ob3QtZXhjaXRlci1ncC1tYXUtbW9pLTIwMTItc2UtcmEtbWF0LXZhby1uZ2F5LTYtMTAtMjAxMi1hLmh0bWw=&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **mới**2012 sẽ ra mắt vào ngày **6**/
Thông tin
**hình ảnh** chi tiết .
[Trung tâm sửa chữa bảo trì](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS81MDQ0OTUzLXRydW5nLXRhbS1zdWEtY2h1YS1iYW8tdHJpLXhlLXRheS1nYS11eS10aW4tY2hhdC1sdW9uZy1naWEtdG90LWFuaC10dWFuLmh0bWw=&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **xe**tay ga -- Uy tín, Chất Lượng, **Giá**tốt **...**
18 Tháng Năm 2012
**...** Trung Tâm Sơn Sửa Bảo Trì **Xe** Tay Ga **ANH** TUẤN Kính chúc quý khách năm
**mới** ... Phuộc HAYATE - dành cho **xe** Air Blade, **Novo** 1-2-3 (gắn vào **xe** rất đẹp-
bền, .... Gửi bởi mom_nai **Xem** bài viết ... 23-10-2012, 10:15 PM # **6** ... biết pro
sớm thì tốt biết mấy tình **hình** là con ab thái của mình **mới** mua củ lại ...
[Báo](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9jaHV5ZW4tdHJvLXhlLW1heS83MzEzODYyLWJhby1naWEtcGh1LXR1bmcteGUtbWF5LXlhbWFoYS1mcmVlLWNoby1hbmgtZW0tNWdpYXkuaHRtbA==&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **giá**phụ tùng **xe**máy **Yamaha**free cho **anh**em 5giay
18 Tháng 4 2014
**...** Close đã nghĩ **Yamaha** ngay 2-5-2014 Thanks tất cả **anh** em 5giay. ... Mặc định.
nếu được thì báo **giá** hộ mình bộ tem RC **mới** của **Nouvo** Sx nhé, **giá** từng món.
Thank bạn nhiều! ... Ngoại tuyến. Thành Viên Cấp **6** nguyenngocduy's Avatar ....
**Xem** website tốt nhất ở chế **độ** màn **hình** 1024 x 768. Cty TNHH ...
**Nouvo**3 Ai đang chạy vào cho mình xin ý kiến với..... - Trang 2 - 5Giay
5 ngày trước
**...** Thành Viên Cấp **6** hero6x6's Avatar ... cái này chỉ cần khéo tay chút + chịu khó
chạy lên tân thành kiếm co thì **mọi** thứ đều ok. ... Gửi bởi thaidesign **Xem** bài viết
... **Nouvo** 3 có ng vẫn còn đam mê vì kiểu dáng, mua **xe** nát về làm lại cũng ok,
như bác .... **Xem** website tốt nhất ở chế **độ** màn **hình** 1024 x 768.
**Xe**máy - **xe**đạp **Xe** máy - **xe** đạp - **Xe** gắn máy 2 bánh, môtô **Xe** đạp: MTB,Touring,road,city ... ...
**nouvo** 5 cuoi 2013, tem **moi** ... l Honda l DYLAN 150 đen cam **xe** dọn đẹp vô
nhiều đồ chơi, **giá** cực tốt 29tr [CÓ **HÌNH** THẬT] .... Trả lời: **6**; **Xem**: 762; Đánh giá0
/ 5.
[BÁN SỈ - BÁN LẺ CÁC DÒNG MÁY TÍNH BẢNG TRUNG QUỐC](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9tYXktdGluaC1iYW5nLzUyMDYzMzUtYmFuLXNpLWJhbi1sZS1jYWMtZG9uZy1tYXktdGluaC1iYW5nLXRydW5nLXF1b2MtYmFvLWhhbmgtMS1uYW0tYmFvLWdpYS10b3QuaHRtbA==&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **...**
16 Tháng Sáu 2012
**...** Bao tex 1 đổi 1 trong vòng 1 tuần - Bảo hành Từ **6** tháng tới 1 năm cho tất .... Hỗ
trợ Audio/video , web video , game, chát, nghe nhạc , **xem phim** , wife ... Ainol
cũng được thị trường biết đến với dòng máy tính bảng **Novo**, **mới** ...
[HCM - Tiệm pô Thái ròm---Thai Rom Exhaust System - 5Giay](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS8xNjEzNjE5LXRpZW0tcG8tdGhhaS1yb20tdGhhaS1yb20tZXhoYXVzdC1zeXN0ZW0uaHRtbA==&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4)
20 Tháng 2 2010
**...** Đánh bóng cổ pô lại như **mới**:40-80k (tùy loại **xe** và chỉ nhận cổ inox làm ... Fải
nói cha nội này pô đúng kĩ lun...đợi "tê ** lê" lun **xém** xíu trễ h đón con. ... tình
**hình** là bữa thứ **6** đc **anh** thái ròm nhà mình hẹn 2g đến mở cổ pô, a thái .... l**
R6 là l** cho **xe** đua **Yamaha** R6 dạng chuyên nghiệp 4 xi-lanh nên ...
[HCM - Chuyên làm nồi các loại](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS8yMzY0MDQ1LWNodXllbi1sYW0tbm9pLWNhYy1sb2FpLXhlLXRheS1nYS1ub3V2by1zaGktc3ltLXZlc3BhLWR5bGFuLW1vYy5odG1s&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **xe**tay ga: **Nouvo**,Shi,Sym,Vespa **...**
7 Tháng Mười 2010
**...** Ace nào muốn tham khảo thêm nhiều **hình ảnh** nữa thì **xem** thêm tạihttp://www.
cuncon1202.net/2010/10/ph...uy-tin-va.html ) .... -Cặp phuộc **Nouvo** 4(Zin theo **xe**
**mới** 99%) 500k -Đèn fa attila còn .... 14-06-2012, 04:54 PM # **6**.
[Máy tính bảng](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9tYXktdGluaC1iYW5nLzQzOTczNzctbWF5LXRpbmgtYmFuZy1ub3ZvLTctYmFzaWMtbW9pLTEwMC1naWEta2h1eWVuLW1haS0yLTl0ci5odG1s&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **NoVo**7 basic **mới**100% **giá**khuyến mãi... 2 **...**- 5Giay
4 Tháng Giêng 2012
**...** Máy tính bảng **NoVo** 7 basic **mới** 100% **giá** khuyến mãi... 2,9tr...>>> ID Topic ....
**Mới** 100% full box. Bảo hành **6** tháng ... Thiết kế đặt sắc , kiểu dáng **hình xe** hơi.
Đèn quang xung ... Gửi bởi cskthanhtra **Xem** bài viết. phụ bạn nè.
[Nhớt lap](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9jaHV5ZW4tdHJvLXhlLW1heS82MjUxMTQ0LW5ob3QtbGFwLW5vdXZvLWx4LWNhc3Ryb2wuaHRtbA==&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **Nouvo**LX-castrol - 5Giay
Sau 1 thời gian con cò bị lệch... đi nặng ga, hao xăng, khi đi cứ nghe rè rè(cái này rất bực) MÌNH từng đi chỉnh cho 2 cái xe của nhà, 1 nouvo, 1 jupiter =>> kết quả nhẹ đi nhiều, bớt hao xăng, ko còn nghe tiếng rè rè nữa. ... Gửi bởi 7STORE Xem bài viết. cái này sài cũng ổn lắm bạn , mình sài qua lun rùi , GL5 độ nhớt 140w , ê cho mình hỏi bên anh tuấn morto toàn nhớt máy là castrol scooter ko phải ko bạn. bữa nay mình thấy có nhớt thái, havoline, toàn thẩy SH, PS ...
[Báo giá phụ tùng](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9jaHV5ZW4tdHJvLXhlLW1heS83MzEzODYyLWJhby1naWEtcGh1LXR1bmcteGUtbWF5LXlhbWFoYS1mcmVlLWNoby1hbmgtZW0tNWdpYXkuaHRtbA==&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **xe**máy Yamaha free cho **anh**em 5giay
Close đã nghĩ Yamaha ngay 2-5-2014 Thanks tất cả anh em 5giay. ... Mặc định. nếu được thì báo giá hộ mình bộ tem RC mới của Nouvo Sx nhé, giá từng món. Thank bạn nhiều! 18-04-2014, 01:57 PM #3 · nguyenngocduy. nguyenngocduy Đang Ngoại tuyến. Thành Viên Cấp 6 nguyenngocduy's Avatar .... Xem website tốt nhất ở chế độ màn hình 1024 x 768. Cty TNHH Tin Học & Thương Mại Nhật Nguyệt Trụ sở: 114 Đường số 2 Cư Xá Đô Thành F.4,Q.3,Tp.HCM
[Toàn Quốc - Điện Tử Ứng Dụng: Cảm Ứng, Báo Xăng, Báo](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS81MjcwNDk5LWRpZWluLXR1aS11aW5nLWR1aW5nLWNhaW0tdWluZy1iYWlvLXhhbmctYmFpby1iaWluaC1iYWlvLXNvaS1kZWluLWxlZC1sdXhlbm9uLmh0bWw=&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **...**
Có thể chỉnh tốc độ chóp của đèn. - Dùng được cho bóng zin và bóng led. - Lắp đơn giản là cấm thay cho chóp zin và 1 dây nối mas. - Dùng được cho mọi loại xe.  ... Loại 2 màu từ N-1-2-3-4-5. Loại có N thì ko có số 6 - Nếu ae nào muốn có số 6 thì dùng loại 1 màu đỏ 0-1-2-3-4-5-6 thì ko có N thay vào N là số 0. - Đặc biệt có jack sẵn cho anh em cấm vào jack zin thôi, ko cần chế cháo. + Loại 1 màu: Giá 50k ...
[Toàn Quốc - Huy Bờ kè Chuyên canh chỉnh phục hồi BXC](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS83MjUyMDgwLWh1eS1iby1rZS1jaHV5ZW4tY2FuaC1jaGluaC1waHVjLWhvaS1ieGMtbmFuZy1jYXAtbWF5LWNhYy1kb25nLXhlLXlhbWFoYS1ob25kYXN1enVraS5odG1s&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **...**
một vài hình ảnh các xe đã làm ở tiệm Huy làm lại chảo ex piston 62 waversx mới làm nhẹ nguyen kit lòng uma pison62 của bạn ở tỉnh sau khi đã lên xe kèm theo pô DBS cho có tiếng nói hihi làm lại nồi cho wave rsx 110 do bạn ở Q10 .... thannk bạn mình làm lấy uy tín làm đầu mà.dĩ nhiên xe khách quen thì có nhiều ưu đãi hơn rồi.xe bạn bảo hành 6 tháng đó.nên cứ yên tâm chạy nha.có vấn đề gì chạy qua mình kiểm tra lại cho nha.ah2 mà nhớ trong 6 tháng chạy ...
[HCM - Tay thắng](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS82ODMyMzcwLXRheS10aGFuZy02LXNvLWxvbmctbm92YS1kYXUtZGVuLWxvbi1kaC1pYy1leC1qdXItbXVhLWRoLWRhdS1uaG8tZ2FwLW5ob20tZXgyazEwLmh0bWw=&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **6**số,lòng Nova,đầu đèn lớn,ĐH,IC Ex,JuR **...**
_Hình: -Góc kích đúng theo góc kích của Dòng xe Yamaha: Si, Ju, Novo,Luvias, Exciter 2011, exciter 2012, FZ-16...Không gây róc ... Tay thắng 6 số,lòng Nova,đầu đèn lớn,ĐH,IC Ex,JuR mua ĐH +đầu nhỏ+gắp nhôm Ex2k10 !!! ID Topic : ... Chóa đèn trước 2k11 GP mới <90%,nguyên cụm pha đèn,giá 200k ( cái này còn keng chóa trước Ex2k11 chắc ai cũng biết nên mình khỏi đăng hình nhé) .... Tag của Chủ đề này. None. Xem Nhóm Tag. Tìm bài viết theo ID Topic ...
**Nouvo**3 thì nên thay nhớt nào là tốt nhất - 5Giay
Cho mình hỏi Nouvo 3 thay nhớt máy và nhớt láp hiệu nào là ok . Thanks. ... Thành Viên Cấp 6 wuan111's Avatar ... shell scooter, máy êm, nhẹ xe, tuy ko bốc = castrol ... Xem website tốt nhất ở chế độ màn hình 1024 x 768.
[[HOT] - Bán Máy Tính Bảng - Ainol](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9tYXktdGluaC1iYW5nLzYyNTEwNjktaG90LWJhbi1tYXktdGluaC1iYW5nLWFpbm9sLW5vdm8tNy10b3JuYWRvcy03LThnLWdpYS1yZS5odG1s&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **Novo**7 Tornados 7 (8G **...**
Mình để lại cho anh em giá Đã Bán. (Đầy Đủ Phụ Kiện). Máy mới mua ngày 31/10/2012 bên Cửa Hàng Tận Tâm (61 - Hùng Vương - Bảo Hành 12 Tháng) - Đã dán keo kín mít, ko trầy chổ nào hết, màn hình sáng láng, pin ...
[HCM - Sữa chữa phục hồi các loại IC zin toi IC do(BRT](/urlredirect?url=aHR0cDovL3d3dy41Z2lheS52bi9waHUtdHVuZy14ZS0yLWJhbmgtdmEtZGljaC12dS82MjEzNjY4LXN1YS1jaHVhLXBodWMtaG9pLWNhYy1sb2FpLWljLXppbi10b2ktaWMtZG8tYnJ0LXJleHRvci1uaGFuLWxhbS1waHVvYy1zYXUtZXhjaXRlci5odG1s&token=jRrKhWL5tBZ5RZxrntfFPzY-s8atmKkxf39XQMeYfF4) **...**
-Công suất phát lửa ra IC đạt 260V (IC zin 220V) Lửa mạnh,đốt sạch nhiên liệu, tăng khả năng sinh công của máy, Giúp xe bạn vận hành nhẹ nhàng và êm ái hơn mà ko cần gắn thêm các linh kiện phụ trợ. -Đây là dòng ... Chấp nhận test so sánh chất lượng, tính năng IC với các sản phẩm đồng giá nếu kém hơn xin tặng anh e con IC chạy chơi, Nếu ko fai IC zin theo hãng YAMAHA cho a e dẹp tiệm mình lun nek. .... Xem website tốt nhất ở chế độ màn hình 1024 x 768.

WARC-Truncated: length

Server: Apache/2.2.15 (CentOS)

X-Content-Type-Options: nosniff

Cache-Control: no-cache, must-revalidate

Set-Cookie: SESS2154841b29a8b125f50ff57b3cc7f23f=9P-WrKkcI0YEQC2VOrzpUoxLWFh8ieNC5R_nsTrw9Pw; expires=Thu, 20-Oct-2016 22:36:20 GMT; path=/; domain=.gia24.net; HttpOnly

Content-Language: vi

X-Frame-Options: SAMEORIGIN


text:
Tiểu quách gỗ vàng tâm Bato, cơ sở chúng tôi sản xuất những sản phẩm sẵn về quách gỗ vàng tâm hoặc nhận đặt theo đơn hàng của quý khách tùy từng nhu cầu về sản phẩm tiểu quách gỗ vàng tâm. Với mong muốn mang đến cho quý khách hàng những sản phẩm tốt nhất, hoàn hảo nhất chúng tôi luôn cố gắng lắng nghe ý kiến của quý khách hàng để cho ra những mẫu mã đẹp hơn, sang hơn.
Sau nhiều năm sản xuất và kinh doanh sản phẩm quách gỗ vàng tâm sản phẩm tiểu quách của Bato với thương hiệu đã khẳng định chính mình trên thị trường việt nam. Với nhiều đơn hàng từ bắc vào nam chúng tôi luôn nói với quý khách hàng rằng, sản phẩm của chúng tôi là số 1 và luôn là những sản phẩm chất lượng nhất
Giá sản phầm vui lòng liên hệ 0986 597 381
Các sản phẩm tiểu quách gỗ vàng tâm Bato
Sản phẩn tiểu quách gỗ vàng tâm Bato
– Khẳng định đảm bảo rằng 100% gỗ vàng tâm thật
– Sử dụng chế tác thủ công theo bí quyết gia truyền
– Giá cả hợp lý nhất thị trường
– Luôn lắng nghe ý kiến của khách hàng để nâng cao chất lượng sản phẩm
– Tư vấn miễn phí cho quý khách hàng
Luôn cố gắng mang đến cho quý khách hàng những sản phẩn tốt nhất, Bato luôn đảm bảo rằng sản phẩm của cơ sở luôn được sáng tạo và nhiều mẫu mã đẹp nhất. Trong tâm linh quan niệm của Bato luôn hướng về những thứ tình người, sẽ không có nơi nào sản xuất những sản phẩm đượm tình người như Bato cả. Và cũng chắc chắn rằng khi bạn đang quan tâm tới sản phẩm đồ gỗ tâm linh này thì bạn cũng đang muốn mang tới cho những người đã khuất những thứ tốt nhất. Sống vì nghề, đặc trưng của chúng tôi là nghề này nên chắc chắn rằng sản phẩm của chúng tôi cũng sẽ làm bạn hài lòng. Bạn đang tìm hiểu về sản phẩm này hãy đừng ngại gọi cho chúng tôi nếu bạn muốn tư vấn thêm
Tìm kiếm phổ biến:
- quách vàng tâm
- quach go vang tam
- anh quach vang tam dep
- giá quách gỗ vàng tâm
- gỗ vàng tâm làm quách
- kích thước quách vàng tâm
- quách bằng gỗ vàng tâm
- quách làm bằng gỗ
- sơn son thiếp vàng

markdown:
[ Bato, cơ sở chúng tôi sản xuất những sản phẩm sẵn về Tiểu quách gỗ vàng tâm](http://www.govangtam.vn/tieu-quach-go-vang-tam) **vàng tâm hoặc nhận đặt theo đơn hàng của quý khách tùy từng nhu cầu về sản phẩm tiểu quách** [quách gỗ](http://www.govangtam.vn/tieu-quach-go-vang-tam) [gỗ vàng tâm](http://www.govangtam.vn). Với mong muốn mang đến cho quý khách hàng những sản phẩm tốt nhất, hoàn hảo nhất chúng tôi luôn cố gắng lắng nghe ý kiến của quý khách hàng để cho ra những mẫu mã đẹp hơn, sang hơn.
Sau nhiều năm sản xuất và kinh doanh sản phẩm quách gỗ vàng tâm sản phẩm
[ của Bato với thương hiệu đã khẳng định chính mình trên thị trường việt nam. Với nhiều đơn hàng từ bắc vào nam chúng tôi luôn nói với quý khách hàng rằng, sản phẩm của chúng tôi là số 1 và luôn là những sản phẩm chất lượng nhất tiểu quách](http://www.govangtam.vn/tieu-quach-go-vang-tam) **Giá sản phầm vui lòng liên hệ 0986 597 381**
## Các sản phẩm tiểu quách gỗ vàng tâm Bato
|Ảnh sản phẩm||
|![]()
|Tên sản phẩm||
|Quách gỗ vàng tâm trạm rồng
|Mã sản phẩm||
|Q06
|Kích thước||
|Cao 46cm, rộng 45cm, dài 87cm, nắp dày 10 cm, địa dày 8 cm, thành dày 8 cm.
|Chất liệu||Gỗ vàng tâm 100%|
|Thông tin về sản phẩm||Sản phẩm được sơn PU. Ngoài ra có thể sơn phủ sơn son thiếp vàng, đánh véc ni hoặc để mộc (không sơn phủ) theo yêu cầu của khách hàng.
|
Hoa văn và họa tiết: Trạm rồng nổi. Ngoài ra còn có thể trạm khắc các loại hoa văn khác theo yêu cầu riêng của quý khách
|Ảnh sản phẩm||
|![]()
|Tên sản phẩm||
|Quách trạm nền gấm Q05
|Mã sản phẩm||
|Q05
|Kích thước||
|Cao 46cm, rộng 45cm, dài 87cm, nắp dày 10 cm, địa dày 8 cm, thành dày 8 cm.
|Chất liệu||Gỗ vàng tâm 100%|
|Thông tin về sản phẩm||Sản phẩm được sơn phủ sơn son thiếp vàng. Ngoài ra có thể sơn PU, đánh véc ni hoặc để mộc (không sơn phủ) theo yêu cầu của khách hàng.
|
Hoa văn và họa tiết: Trạm hoa văn nền gấm chìm. Ngoài ra còn có thể trạm khắc các loại hoa văn khác theo yêu cầu riêng của quý khách
|Ảnh sản phẩm||
|![]()
|Tên sản phẩm||
|Quách trạm rồng sơn son thiếp vàng Q01
|Mã sản phẩm||
|Q01
|Kích thước||
|Cao 46cm, rộng 45cm, dài 87cm, nắp dày 10 cm, địa dày 8 cm, thành dày 8 cm.
|Chất liệu||Gỗ vàng tâm 100%|
|Thông tin về sản phẩm||Sản phẩm được sơn phủ sơn son thiếp vàng. Ngoài ra có thể sơn PU, đánh véc ni hoặc để mộc (không sơn phủ) theo yêu cầu của khách hàng.
|
Hoa văn và họa tiết: Trạm rồng nổi. Ngoài ra còn có thể trạm khắc các loại hoa văn khác theo yêu cầu riêng của quý khách
|Ảnh sản phẩm||
|![]()
|Tên sản phẩm||
|Quách trạm rồng sơn son thiếp vàng Q02
|Mã sản phẩm||
|Q02
|Kích thước||
|Cao 48cm, rộng 48cm, dài 87cm, nắp dày 10cm, địa dày 10cm, thành dày 10cm
|Chất liệu||Gỗ vàng tâm 100%|
|Thông tin về sản phẩm||Sản phẩm được sơn phủ sơn son thiếp vàng. Ngoài ra có thể sơn PU, đánh véc ni hoặc để mộc (không sơn phủ) theo yêu cầu của khách hàng.
|
Hoa văn và họa tiết: Trạm rồng nổi. Ngoài ra còn có thể trạm khắc các loại hoa văn khác theo yêu cầu riêng của quý khách
|Ảnh sản phẩm||
|![]()
|Tên sản phẩm||
|Quách trạm sen sơn PU Q04
|Mã sản phẩm||
|Q04
|Kích thước||
|Cao 48cm, rộng 42cm, dài 83cm, nắp dày 10cm, địa dày 7cm, thành dày 7cm
|Chất liệu||Gỗ vàng tâm 100%|
|Thông tin về sản phẩm||Sản phẩm được sơn phủ sơn PU. Ngoài ra có thể sơn son thiếp vàng, đánh véc ni hoặc để mộc (không sơn phủ) theo yêu cầu của khách hàng
|
Hoa văn và họa tiết: Trạm khắc hoa sen mềm mại và tinh xảo. Ngoài ra còn có thể trạm khắc các loại hoa văn khác theo yêu cầu riêng của quý khách
|Ảnh sản phẩm||
|![]()
|Tên sản phẩm||
|Quách trạm Tả Thanh Long, Hữu Bạch Hổ
|Mã sản phẩm||
|Q07
|Kích thước||
|Cao 58cm, rộng 48cm, dài 89cm, nắp dày 15cm, địa dày 15cm, thành dày 10cm
|Chất liệu||Gỗ vàng tâm 100%|
|Thông tin về sản phẩm||Sản phẩm được sơn PU. Ngoài ra có thể sơn phủ sơn son thiếp vàng, đánh véc ni hoặc để mộc (không sơn phủ) theo yêu cầu của khách hàng.
|
Hoa văn và họa tiết: Trạm rồng và hổ nổi. Ngoài ra còn có thể trạm khắc các loại hoa văn khác theo yêu cầu riêng của quý khách
|Ảnh sản phẩm||
|![]()
|Tên sản phẩm||
|Quách trơn Q03
|Mã sản phẩm||
|Q03
|Kích thước||
|Cao 47cm, rộng 40cm, dài 81cm, nắp dày 10cm, địa dày 6cm, thành dày 6cm
|Chất liệu||Gỗ vàng tâm 100%|
|Thông tin về sản phẩm||Sản phẩm được sơn phủ bằng vec ni. Ngoài ra có thể sơn PU, sơn son thiết vàng hoặc để mộc (không sơn phủ) theo yêu cầu của khách hàng
|
Hoa văn và họa tiết: Sản phẩm được trạm hoa văn truyền thống ở hai đầu sản phẩm. Ngoài ra còn có thể trạm khắc các loại hoa văn khác theo yêu cầu riêng của quý khách
## Sản phẩn tiểu quách gỗ vàng tâm Bato
– Khẳng định đảm bảo rằng 100% gỗ vàng tâm thật
– Sử dụng chế tác thủ công theo bí quyết gia truyền
– Giá cả hợp lý nhất thị trường
– Luôn lắng nghe ý kiến của khách hàng để nâng cao chất lượng sản phẩm
– Tư vấn miễn phí cho quý khách hàng
Luôn cố gắng mang đến cho quý khách hàng những sản phẩn tốt nhất, Bato luôn đảm bảo rằng sản phẩm của cơ sở luôn được sáng tạo và nhiều mẫu mã đẹp nhất. Trong tâm linh quan niệm của Bato luôn hướng về những thứ tình người, sẽ không có nơi nào sản xuất những sản phẩm đượm tình người như Bato cả. Và cũng chắc chắn rằng khi bạn đang quan tâm tới sản phẩm đồ gỗ tâm linh này thì bạn cũng đang muốn mang tới cho những người đã khuất những thứ tốt nhất. Sống vì nghề, đặc trưng của chúng tôi là nghề này nên chắc chắn rằng sản phẩm của chúng tôi cũng sẽ làm bạn hài lòng. Bạn đang tìm hiểu về sản phẩm này hãy đừng ngại gọi cho chúng tôi nếu bạn muốn tư vấn thêm
#### Tìm kiếm phổ biến:
- quách vàng tâm
- quach go vang tam
- anh quach vang tam dep
- giá quách gỗ vàng tâm
- gỗ vàng tâm làm quách
- kích thước quách vàng tâm
- quách bằng gỗ vàng tâm
- quách làm bằng gỗ
- sơn son thiếp vàng

WARC-Type: response

Content-Type: application/http; msgtype=response

Connection: close

Server: LiteSpeed

Vary: Accept-Encoding

Accept-Ranges: bytes

Content-Type: text/html; charset=UTF-8


text:
Trước khi bạn bắt đầu
Về loạt bài này
Loạt bài hướng dẫn này dạy các chủ đề SQL từ cơ bản đến nâng cao và các chủ đề XQuery cơ bản. Nó cũng chỉ ra cách diễn đạt các câu hỏi nghiệp vụ thường gặp bằng các truy vấn cơ sở dữ liệu sử dụng các câu truy vấn SQL hay các câu truy vấn XQuery. Những người phát triển ứng dụng và những người quản trị cơ sở dữ liệu có thể sử dụng hướng dẫn này để nâng cao các kỹ năng truy vấn cơ sở dữ liệu của mình. Các thành viên tham gia sáng kiến học đường IBM có thể sử dụng loạt hướng dẫn này như một phần trong chương trình giảng dạy cơ sở dữ liệu của họ.
Tất cả các ví dụ trong bài này là dựa trên Aroma, một cơ sở dữ liệu mẫu chứa các dữ liệu doanh thu về các sản phẩm cà phê và chè đã bán trong các cửa hàng trên khắp nước Mỹ. Mỗi ví dụ gồm có ba phần:
- Một câu hỏi kinh doanh dưới dạng ngôn ngữ thường ngày
- Một hoặc nhiều ví dụ truy vấn , được biểu diễn bằng SQL hay Xquery
- Một bảng các kết quả trả về từ cơ sở dữ liệu
Hướng dẫn này được thiết kế để cho phép các học viên học tập ngôn ngữ SQL và XQuery. Cũng như học bất cứ cái gì khác, việc bổ sung thêm các bài tập thực hành là rất quan trọng. Dữ liệu và các định nghĩa bảng sẽ tạo điều kiện thuận lợi cho các bài tập thực hành này.
Đối với các sinh viên sử dụng tài liệu này như một phần của khoá học, hãy nhận từ thầy hướng dẫn của mình các chỉ dẫn để kết nối tới cơ sở dữ liệu Aroma và tìm hiểu mọi sự khác biệt giữa hướng dẫn và cài đặt tại máy cục bộ của mình.
Hướng dẫn này được viết cho DB2 9 Express-C trên nền UNIX®, Linux® và Windows® (trước đây gọi là Viper).
Về hướng dẫn này
Hướng dẫn này thảo luận về các truy vấn dùng để so sánh dữ liệu trong một cơ sở dữ liệu DB2 của IBM. Nó bắt đầu bằng cách minh họa vấn đề mà người viết truy vấn phải đối phó: cách sử dụng SQL để trả về một bảng tính hay báo cáo "tổng hợp" chứ không phải một tập hợp kết quả tiêu chuẩn, sắp xếp theo thứ tự thẳng đứng rất khó đọc. Vấn đề này được giải quyết bằng các biểu thức CASE hoặc các truy vấn phụ.
Giải pháp CASE, được giới thiệu đầu tiên, là một cách đơn giản và ngắn gọn để so sánh các nhóm các giá trị tương tự nhau. Tiếp theo sẽ trình bày một vài ví dụ của mệnh đề FROM và các truy vấn phụ của danh sách chọn lựa. Các truy vấn phụ này có thêm giá trị ở chỗ có thể vừa so sánh dữ liệu từ các nhóm khác nhau và vừa gồm các tính toán đối với các giá trị được so sánh, ví dụ như là các phần trăm đóng góp trong các thời hạn đã cho.
Hướng dẫn này mô tả các truy vấn phụ được tuyên bố như là các điều kiện trong mệnh đề WHERE, có ích cho các truy vấn so sánh đơn giản. Phần cuối cùng cũng mô tả các thuộc tính ALL, EXISTS, và SOME hoặc ANY. Các thuộc tínhnày có thể được dùng để biểu diễn các điều kiện đối với kết quả của truy vấn phụ.
Kết nối tới một cơ sở dữ liệu
Bạn cần kết nối tới một cơ sở dữ liệu trước khi có thể sử dụng các câu lệnh SQL để truy vấn hay xử lý dữ liệu. Lệnh CONNECT kết hợp một kết nối cơ sở dữ liệu với một tên người sử dụng.
Thông qua người hướng dẫn tìm ra tên cơ sở dữ liệu bạn cần nối tới. Đối với loạt bài này, tên cơ sở dữ liệu là aromadb.
Để kết nối tới cơ sở dữ liệu aromadb, gõ lệnh sau đây vào trong bộ xử lý dòng lệnh DB2:
CONNECT TO aromadb USER userid USING password
Thay thế "userid" và "password" bằng số ID và mật khẩu của người sử dụng mà bạn đã nhận được từ thầy hướng dẫn. Nếu máy không hỏi userid và password thì chỉ cần gõ vào lệnh sau đây:
CONNECT TO aromadb
Thông điệp sau báo cho bạn biết rằng đã tạo kết nối thành công:
Database Connection Information Database server = DB2/NT 9.0.0 SQL authorization ID = USERID Local database alias = AROMADB
Khi đã kết nối được, bạn có thể bắt đầu sử dụng cơ sở dữ liệu.
So sánh dữ liệu bằng câu hỏi SQL
Câu hỏi
So sánh doanh thu của cà phê đóng gói tại các cửa hàng ở vùng phía Tây trong năm 2004 ra sao?
Ví dụ truy vấn
SELECT store_name, prod_name, SUM(dollars) AS sales FROM aroma.market a, aroma.store b, aroma.period c, aroma.product d, aroma.class e, aroma.sales f WHERE a.mktkey = b.mktkey AND b.storekey = f.storekey AND c.perkey = f.perkey AND d.classkey = e.classkey AND d.classkey = f.classkey AND d.prodkey = f.prodkey AND region like 'West%' AND year = 2004 AND class_type = 'Pkg_coffee' GROUP BY store_name, prod_name ORDER BY store_name, prod_name;
Kết quả
Một truy vấn so sánh đơn giản
Bạn có thể liệt kê doanh thu của một nhóm các sản phẩm tại các cửa hàng cụ thể bằng một lệnh SELECT đơn giản, nhưng định dạng của bảng kết quả làm cho các giá trị khó so sánh được. Ví dụ, tập hợp kết quả của phần trên cho thấy cà phê La Antigua đã bán ra tại một vài cửa hàng trong vùng phía tây, nhưng các con số này rất khó tách ra.
Loại dữ liệu này sẽ dễ so sánh hơn nhiều khi nó được định dạng như một bảng tính. Có hai cách để tạo ra một báo cáo bảng tính, hay báo cáo "tổng hợp": sử dụng các biểu thức CASE hay các truy vấn phụ. Các ví dụ tiếp sau trong hướng dẫn này minh họa cả hai phương pháp viết các truy vấn so sánh.
Về truy vấn
Ví dụ truy vấn trả về các số doanh thu năm 2004 của các sản phẩm cà phê đóng gói bán tại mỗi cửa hàng trong vùng phía tây, nhưng định dạng của dữ liệu kết quả làm cho nó trở nên khó so sánh các con số theo từng sản phẩm, theo từng cửa hàng với nhau.
Sử dụng các biểu thức CASE
Câu hỏi
So sánh doanh thu của cà phê đóng gói tại các cửa hàng ở vùng phía Tây trong năm 2004 như thế nào?
Ví dụ truy vấn
SELECT prod_name, SUM(CASE WHEN store_name = 'Beaches Brew' then dollars else 0 end) AS Beaches, SUM(CASE WHEN store_name = 'Cupertino Coffee Supply' then dollars else 0 end) AS Cupertino, SUM(CASE WHEN store_name = 'Roasters, Los Gatos' then dollars else 0 end) AS RoastLG, SUM(CASE WHEN store_name = 'San Jose Roasting Company' then dollars else 0 end) AS SJRoastCo, SUM(CASE WHEN store_name = 'Java Judy''s' then dollars else 0 end) AS JavaJudy, SUM(CASE WHEN store_name = 'Instant Coffee' then dollars else 0 end) AS Instant FROM aroma.market a, aroma.store b, aroma.period c, aroma.product d, aroma.class e, aroma.sales f WHERE a.mktkey = b.mktkey AND b.storekey = f.storekey AND c.perkey = f.perkey AND d.classkey = e.classkey AND d.classkey = f.classkey AND d.prodkey = f.prodkey AND region LIKE 'West%' AND year = 2004 AND class_type = 'Pkg_coffee' GROUP BY prod_name ORDER BY prod_name;
Kết quả
Một giải pháp để so sánh dữ liệu: các biểu thức CASE
Một cách hiệu quả và ngắn gọn để hiển thị các giá trị so sánh theo một định dạng bảng tính dễ đọc là sử dụng các biểu thức CASE trong danh sách chọn lựa. Mỗi phép tính CASE đánh giá một biểu thức đã chỉ rõ và cung cấp một giá trị khác nhau, phụ thuộc vào một điều kiện nhất định có được đáp ứng hay không.
Cú pháp CASE
Nói chung, bạn xây dựng một truy vấn so sánh CASE bằng cách chỉ rõ những ràng buộc trên toàn bộ miền mà trên đó các kết quả được sinh ra trong mệnh đề WHERE của truy vấn chính hay là truy vấn ngoài. Sau đó, bạn phân chia kết quả thành các tập con với một biểu thức CASE trong danh sách lựa chọn:
CASE WHEN search_condition THEN result1 ELSE result2 END AS col_alias
Chú ý quan trọng: Một biểu thức CASE có thể ở một trong hai dạng: đơn giản hay có tìm kiếm. Ví dụ này sử dụng dạng có tìm kiếm. Để biết thêm chi tiết, tham khảo SQL Reference Guide (Hướng dẫn tham khảo SQL) .
Về truy vấn
Truy vấn này đặt ra cùng một câu hỏi kinh doanh giống như truy vấn trước trong hướng dẫn này. Tuy nhiên, trong trường hợp này biểu thức CASE được dùng để tạo ra sáu cột khác nhau trong tập hợp kết quả. Tập hợp kết quả này có chứa tổng các giá trị đôla, một cột cho mỗi cửa hàng.
Sử dụng các truy vấn phụ trong mệnh đề FROM
Câu hỏi
Doanh thu sản phẩm tại San Jose trong tháng Giêng 2004 so với doanh thu sản phẩm này hàng năm trong cùng thành phố trong cùng năm là như thế nào?
Ví dụ truy vấn
SELECT sales1.product, jan_04_sales, total_04_sales FROM (SELECT prod_name, SUM(dollars) FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND c.year = 2004 AND c.month = 'JAN' AND d.city LIKE 'San J%' GROUP BY a.prod_name) AS sales1(product, jan_04_sales) , (SELECT prod_name, SUM(dollars) AS total_04_sales FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND c.year = 2004 AND d.city LIKE 'San J%' GROUP BY a.prod_name) AS sales2(product, total_04_sales) WHERE sales1.product = sales2.product ORDER BY sales1.product;
Kết quả
Một giải pháp linh hoạt hơn: Các truy vấn phụ trong mệnh đề FROM
Một truy vấn phụ là biểu thức truy vấn bất kỳ trong dấu ngoặc xuất hiện bên trong câu hỏi khác. Một truy vấn phụ đôi khi được gọi là một truy vấn bên trong. Truy vấn bên trong hoạt động bên trong truy vấn phía ngoài, hay như là truy vấn con của một truy vấn cha mẹ.
Về truy vấn
Một giá trị thường được so sánh với một tổng của một tập hợp các giá trị. Ví dụ truy vấn so sánh doanh thu sản phẩm ở San Jose trong tháng Giêng 2004 với doanh thu ở San Jose suốt cả năm 2004. Loại truy vấn này yêu cầu các phép gộp hỗn hợp; bởi vậy, không thể viết loại truy vấn đó bằng các biểu thức CASE vì biểu thức CASE phải hoạt động theo các giá trị bên trong một nhóm đơn hay một phạm vi. Thay vào đó, các truy vấn phụ trong mệnh đề FROM được dùng để thực hiện so sánh.
Chú ý quan trọng: Bất kỳ truy vấn nào mà có thể được biểu diễn như một truy vấn phụ trong mệnh đề FROM cũng có thể được biểu diễn như một truy vấn phụ trong danh sách chọn lựa, như sẽ cho thấy ở phần sau trong hướng dẫn này.
Các lưu ý về cách dùng
Ví dụ truy vấn dựa vào tính linh hoạt của biểu thức truy vấn trong SQL tiêu chuẩn để kết nối các kết quả của hai truy vấn phụ. Để biết thêm thông tin chi tiết về các biểu thức truy vấn, xem SQL Reference Guide.
Các bảng dẫn xuất từ kết quả đánh giá của các truy vấn phụ có thể được kết nối với các tham chiếu bảng khác. Với mục đích này, một truy vấn phụ trong mệnh đề FROM phải có một tên tương quan. Ví dụ, các truy vấn phụ trong ví dụ này được đánh giá thành các bảng sau đây:
sales1(product, jan_04_sales) sales2(product, total_04_sales)
Phép nối các bảng này (qua cột Product) tạo ra một bảng phát sinh không tên có ba cột, là nguồn của ba mục của danh sách chọn lựa trong truy vấn chính:
product, jan_04_sales, total_04_sales
Thực hiện các tính toán và các so sánh
Câu hỏi
Doanh thu sản phẩm trong Tháng Giêng 2004 tại San Jose chiếm bao nhiêu phần trăm của doanh thu sản phẩm hàng năm trong cùng thành phố? Mười sản phẩm bán chạy nhất theo tỷ lệ phần trăm đó là gì?
Ví dụ truy vấn
SELECT sales1.product, jan_04_sales, total_04_sales, DEC((100.00 * jan_04_sales/total_04_sales),7,2) AS pct_of_04 FROM (SELECT a1.prod_name, SUM(dollars) FROM aroma.product a1, aroma.sales b1, aroma.period c1, aroma.store d1 WHERE a1.prodkey = b1.prodkey AND a1.classkey = b1.classkey AND c1.perkey = b1.perkey AND d1.storekey = b1.storekey AND c1.year = 2004 AND c1.month = 'JAN' AND d1.city LIKE 'San J%' GROUP BY a1.prod_name) AS sales1(product, jan_04_sales) , (SELECT a2.prod_name, SUM(dollars) FROM aroma.product a2, aroma.sales b2, aroma.period c2, aroma.store d2 WHERE a2.prodkey = b2.prodkey AND a2.classkey = b2.classkey AND c2.perkey = b2.perkey AND d2.storekey = b2.storekey AND c2.year = 2004 AND d2.city LIKE 'San J%' GROUP BY a2.prod_name) AS sales2(product, total_04_sales) WHERE sales1.product = sales2.product ORDER BY pct_of_04 DESC FETCH FIRST 10 ROWS ONLY;
Kết quả
Các tính toán với các truy vấn phụ của mệnh đề FROM
Tập hợp kết quả của một truy vấn so sánh có thể được sử dụng như dữ liệu nguồn cho các tính toán khác nhau. Ví dụ, một tổng doanh thu hàng tháng của một sản phẩm có thể được biểu diễn như phần đóng góp trong doanh thu hàng năm với cách tính toán tỷ lệ phần trăm đơn giản:
100.00 * monthly_sales / annual_sales
Các truy vấn phụ trong mệnh đề FROM có thể dùng để tính toán các tỷ lệ phần trăm hay phần đóng góp theo thị trường, theo sản phẩm và theo các khoảng thời gian.
Về truy vấn
Dựa vào ví dụ trước, truy vấn này tính toán các số doanh thu hàng tháng cho từng sản phẩm ở San Jose như phần đóng góp hoặc tỷ lệ phần trăm của doanh thu hàng năm của sản phẩm đó trong cùng thành phố. Tập hợp kết quả có thể tạo ra một danh sách xếp hạng dựa vào quyết định sắp xếp của bạn.
Các con số trong cột Pct_of_04 không tổng cộng thành 100 vì các con số này tương ứng với tỷ lệ phần trăm của một tháng trong một năm cho doanh thu của mỗi sản phẩm riêng lẻ, không phải tỷ lệ phần trăm của doanh thu hàng tháng trong toàn bộ doanh thu hàng năm.
Biểu đồ này cho thấy doanh thu trong tháng Giêng chiếm một vài phần trăm của doanh thu suốt cả năm. Ví dụ, các ấm chè được bán trong tháng Giêng chiếm10.69% của tổng doanh thu ấm chè năm.
Sử dụng các truy vấn phụ trong danh sách SELECT
Câu hỏi
Trong những ngày nào của tháng Mười Hai năm 2005 có các số doanh thu Lotta Latte tại công ty Roasting San Jose thấp hơn số doanh thu trung bình hàng ngày của cùng sản phẩm tại cùng cửa hàng trong tháng Mười Hai 2004? Hiển thị trung bình hằng ngày cho năm 2004 theo một cột riêng.
Ví dụ truy vấn
SELECT prod_name, store_name, date, dollars AS sales_05, (SELECT DEC(AVG(dollars),7,2) FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND year = 2004 AND month = 'DEC' AND store_name = 'San Jose Roasting Company' AND prod_name LIKE 'Lotta%') AS avg_04 FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND prod_name LIKE 'Lotta%' AND store_name = 'San Jose Roasting Company' AND year = 2005 AND month = 'DEC' AND dollars < (SELECT AVG(dollars) FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND year = 2004 AND month = 'DEC' AND store_name = 'San Jose Roasting Company' AND prod_name LIKE 'Lotta%');
Kết quả
So sánh bằng các truy vấn phụ của danh sách chọn lựa
Một truy vấn phụ có thể xuất hiện trong danh sách chọn lựa của một truy vấn chính chỉ khi nó trả về một hàng hay không trả về hàng nào. Loại truy vấn phụ này, gọi là truy vấn phụ vô hướng, có ích cho các so sánh kiểu bảng tính trong đó một loạt các giá trị được truy vấn chính trả về so sánh với một giá trị do truy vấn phụ trả về.
Về truy vấn
Truy vấn phụ của ví dụ này trả về các số doanh thu Lotta Latte hằng ngày tại công ty Roasting San Jose năm 2005 trong trường hợp số doanh thu đó thấp hơn số doanh thu trung bình hàng ngày tại cùng cửa hàng trong thời gian 2004. Cột Avg_04 có chứa chỉ một giá trị đơn lặp lại là giá trị trung bình năm 2004; giá trị giống nhau này sẽ xuất hiện trong cột đó bất kể số lượng các hàng trong tập hợp kết quả.
Cùng một truy vấn phụ giống như vậy xuất hiện hai lần trong truy vấn chính:
- Một lần như định nghĩa cột trong danh sách lựa chọn
- Một lần như một toán hạng của toán tử nhỏ hơn (<) trong một điều kiện của mệnh đề WHERE
Truy vấn này được xử lý theo thứ tự sau:
- Truy vấn phụ thứ hai, định nghĩa điều kiện tìm kiếm trong mệnh đề WHERE của truy vấn chính, được thực hiện.
- Giá trị dẫn xuất từ truy vấn phụ thứ hai được chèn vào vào trong mệnh đề WHERE của truy vấn chính.
- Truy vấn phụ của danh sách lựa chọn được thực hiện.
- Truy vấn chính được thực hiện.
Các lưu ý về cách dùng
Hàm vô hướng DEC được sử dụng trên cột Avg_04 của tập kết quả để cắt bớt các số doanh thu trung bình:
DEC(AVG(dollars),7,2)
Sử dụng các truy vấn phụ có tương quan
Câu hỏi
Doanh thu của từng sản phẩm riêng lẻ ở San Jose trong tháng Giêng 2004 so với doanh thu hàng năm trong cùng thành phố trong cùng năm là bao nhiêu?
Ví dụ truy vấn
SELECT p1.prod_name, SUM(s1.dollars) AS jan_04_sales, (SELECT SUM(s2.dollars) FROM aroma.product p2, aroma.sales s2, aroma.period d2, aroma.store r2 WHERE p2.prodkey = s2.prodkey AND p2.classkey = s2.classkey AND d2.perkey = s2.perkey AND r2.storekey = s2.storekey AND p1.prod_name = p2.prod_name AND d1.year = d2.year AND r1.city = r2.city) AS total_04_sales FROM aroma.store r1, aroma.sales s1, aroma.product p1, aroma.period d1 WHERE p1.prodkey = s1.prodkey AND p1.classkey = s1.classkey AND d1.perkey = s1.perkey AND r1.storekey = s1.storekey AND year = 2004 AND month = 'JAN' AND city LIKE 'San J%' GROUP BY p1.prod_name, d1.year, r1.city ORDER BY p1.prod_name;
Kết quả
Các truy vấn phụ có tương quan trong danh sách lựa chọn
Tuy các truy vấn phụ của danh sách lựa chọn phải trả về một giá trị đơn hay không có giá trị nào, thì các truy vấn phụ đó vẫn có thể được thực hiện nhiều hơn một lần do tham khảo đến các kết quả được truy vấn chính trả về. Theo cách này các truy vấn phụ có tương quan như vậy trong danh sách lựa chọn có thể cho cùng một kết quả như các truy vấn phụ trong mệnh đề FROM.
Một truy vấn phụ có tương quan có quan hệ chặt chẽ với truy vấn chính thông qua tham khảo chéo tới các giá trị cụ thể trong các hàng được truy vấn chính lấy ra. Ví dụ, một truy vấn phụ tương quan có thể tham chiếu các giá trị trong cột Month của truy vấn chính; bởi vậy, truy vấn phụ trả về một giá trị mới mỗi khi giá trị của cột Month thay đổi. Các tên tương quan của bảng được gán trong mệnh đề FROM biểu diễn các tham khảo chéo này.
Về truy vấn
Ví dụ truy vấn đưa ra câu hỏi kinh doanh giống như truy vấn trước đó, nhưng lại đặt truy vấn phụ trong danh sách lựa chọn thay vì trong mệnh đề FROM. Truy vấn so sánh doanh thu của các sản phẩm ở San Jose trong tháng giêng 2004 với doanh thu hàng năm của các sản phẩm ở San Jose trong cùng năm.
Để làm cho truy vấn phụ có khả năng trả về một loạt các giá trị thay cho một giá trị cố định ba tham khảo chéo gắn truy vấn phụ với truy vấn chính:
p1.prod_name = p2.prod_name d1.year = d2.year r1.city = r2.city
Các tên tương quan p2, d2, và r2, được định nghĩa trong mệnh đề FROM của truy vấn phụ, loại bỏ tình trạng không rõ ràng. Mỗi điều kiện tương quan tham chiếu một sản phẩm, năm và thành phố cụ thể trong hàng hiện đang được câu hỏi chính xử lý. Các tham khảo chéo này đôi khi được gọi là các tham khảo ngoài.
Các lưu ý về cách dùng
Khi một hàm gộp xuất hiện trong danh sách lựa chọn của truy vấn chính, cần phải có một mệnh đề GROUP BY. Các tên cột được tham chiếu trong một điều kiện tương quan của một truy vấn phụ phải xuất hiện trong mệnh đề GROUP BY của truy vấn chính; vì vậy, các cột sau đây phải được liệt kê trong mệnh đề GROUP BY cũng như cột Prod_Name:
d1.year, r1.city
Sử dụng các tham khảo chéo
Câu hỏi
Doanh thu hàng tháng của Lotta Latte ở San Jose trong ba tháng đầu tiên của 2005 và 2004 là bao nhiêu?
Ví dụ truy vấn
SELECT q.prod_name, e.month, SUM(dollars) AS sales_05, (SELECT SUM(dollars) FROM aroma.store t, aroma.sales s, aroma.product p, aroma.period d WHERE t.storekey = s.storekey AND p.classkey = s.classkey AND p.prodkey = s.prodkey AND d.perkey = s.perkey AND d.month = e.month AND d.year = e.year-1 AND p.prod_name = q.prod_name AND t.city = u.city) AS sales_04 FROM aroma.store u, aroma.product q, aroma.period e, aroma.sales l WHERE u.storekey = l.storekey AND q.classkey = l.classkey AND q.prodkey = l.prodkey AND e.perkey = l.perkey AND qtr = 'Q1_05' AND prod_name LIKE 'Lotta Latte%' AND city like 'San J%' GROUP BY q.prod_name, e.month, e.year, u.city;
Kết quả
Các tham khảo chéo với các biểu thức
Các tham khảo chéo trong các truy vấn phụ không chỉ hạn chế tới các tên cột đầy đủ; chúng có thể cũng là các biểu thức. Ví dụ, các biểu thức sau đây là các tham khảo chéo hợp lệ:
period.year-1 (previous year) period.quarter-1 (previous quarter)
Loại tham khảo chéo tổng quát hóa này làm đơn giản hóa việc thiết kế các công cụ ứng dụng phía khách.
Về truy vấn
Truy vấn này trả về doanh thu Lotta Latte hàng tháng ở San Jose trong ba tháng đầu tiên của cả năm 2005 lẫn 2004. Giải pháp tương quan là kết quả mong đợi có chứa dữ liệu cùng các tháng nhưng khác năm.
Mệnh đề FROM của truy vấn chính gán các tên tương quan cho tất cả các bảng có liên kết với nhau:
FROM aroma.store u, aroma.product q, aroma.period e, aroma.sales l
Truy vấn phụ sau đó gắn việc thực hiện của nó với việc thực hiện truy vấn chính dựa vào các điều kiện sau trong mệnh đề WHERE:
d.month = e.month d.year = e.year-1 p.prod_name = q.prod_name t.city = u.city
Do truy vấn chính lấy ra các hàng nên các giá trị của mỗi cột trong truy vấn cha mẹ có thể thay đổi, và các điều kiện tương quan truyền sự thay đổi này tới truy vấn phụ. Mối tham khảo chéo tới năm trước có dạng year-1 làm tổng quát hóa truy vấn phụ bằng cách loại bỏ một giá trị không đổi (2004).
Muốn thay đổi truy vấn để báo cáo theo các thời hạn năm khác, chỉ cần thay đổi ràng buộc về năm trong truy vấn chính.
Các lưu ý về cách dùng
Mỗi khi có thể, hãy tổng quát hóa các truy vấn phụ có tương quan và giảm thiểu sự tương tác của người sử dụng bằng cách dùng các tham khảo chéo dạng biểu thức.
Tính toán các tỷ lệ phần trăm của quý và năm
Câu hỏi
Các tổng số doanh thu hàng tháng trong quý đầu tiên của năm 2004 của các sản phẩm đã bán theo các túi một bảng ở San Jose là bao nhiêu? Tỷ lệ phần trăm của doanh thu mỗi tháng so với cả quý và so với cả năm là bao nhiêu?
Ví dụ truy vấn
SELECT pj.prod_name, dj.month, SUM(dollars) AS mon_sales_04, DEC(100 * DEC(SUM(dollars))/ (SELECT SUM(si.dollars) FROM aroma.store ri, aroma.sales si, aroma.product pi, aroma.period di WHERE si.storekey = ri.storekey AND si.classkey = pi.classkey AND si.prodkey = pi.prodkey AND si.perkey = di.perkey AND di.qtr = dj.qtr AND di.year = dj.year AND pi.prod_name = pj.prod_name AND pi.pkg_type = pj.pkg_type AND ri.city = rj.city), 7, 2) AS pct_qtr1, DEC(100 * DEC(SUM(dollars))/ (SELECT SUM(si.dollars) FROM aroma.store ri, aroma.sales si, aroma.product pi, aroma.period di WHERE si.storekey = ri.storekey AND si.classkey = pi.classkey AND si.prodkey = pi.prodkey AND si.perkey = di.perkey AND di.year = dj.year AND pi.prod_name = pj.prod_name AND pi.pkg_type = pj.pkg_type AND ri.city = rj.city), 7, 2) AS pct_yr FROM aroma.store rj, aroma.sales sj, aroma.product pj, aroma.period dj WHERE sj.storekey = rj.storekey AND sj.classkey = pj.classkey AND sj.prodkey = pj.prodkey AND sj.perkey = dj.perkey AND rj.city = 'San Jose' AND dj.year = 2004 AND dj.qtr = 'Q1_04' AND pkg_type = 'One-pound bag' GROUP BY pj.prod_name, dj.month, dj.qtr, dj.year, pj.pkg_type, rj.city ORDER BY pj.prod_name, pct_qtr1 desc;
Kết quả
Tính toán với các truy vấn phụ của danh sách lựa chọn
Các tỷ lệ phần trăm hàng tháng so với cả quý, cả năm hay các kỳ hạn khác có thể được tính toán với một truy vấn phụ trong danh sách lựa chọn. Truy vấn chính lấy ra các số doanh thu hàng tháng và hai truy vấn phụ lấy ra các con số doanh thu hàng quý và hàng năm. Các tỷ lệ phần trăm hàng tháng chỉ cần các tính toán đơn giản: các tỷ số của doanh thu hàng tháng so với quý và doanh thu hàng tháng so với năm.
Về truy vấn
Ví dụ truy vấn này tính toán các tỷ lệ phần trăm doanh thu hàng tháng so với quý và doanh thu hàng tháng so với năm cho các sản phẩm cà phê đã chọn được bán ở San Jose trong quý 1 năm 2004. Sau khi tính toán các tỷ lệ phần trăm, truy vấn này sắp xếp bảng kết quả theo sản phẩm và tỷ lệ phần trăm hàng quý theo thứ tự giảm dần.
Sử dụng các truy vấn phụ trong mệnh đề WHERE
Câu hỏi
Trong những ngày nào trong tháng Sáu năm 2005 các số doanh thu Lotta Latte tại các cửa hàng ở hạt Chicago thấp hơn số doanh thu trung bình hàng ngày của cùng sản phẩm trong hạt này trong tháng Sáu 2004?
Ví dụ truy vấn
SELECT prod_name, district, date, dollars AS sales_05 FROM aroma.market a, aroma.store b, aroma.sales c, aroma.product d, aroma.period e WHERE a.mktkey = b.mktkey AND b.storekey = c.storekey AND d.classkey = c.classkey AND d.prodkey = c.prodkey AND e.perkey = c.perkey AND prod_name like 'Lotta%' AND district like 'Chic%' AND year = 2005 AND month = 'JUN' AND dollars < (SELECT AVG(dollars) FROM aroma.market a, aroma.store b, aroma.sales c, aroma.product d, aroma.period e WHERE a.mktkey = b.mktkey AND b.storekey = c.storekey AND d.classkey = c.classkey AND d.prodkey = c.prodkey AND e.perkey = c.perkey AND prod_name like 'Lotta%' AND district like 'Chic%' AND year = 2004 AND month = 'JUN') ORDER BY date;
Kết quả
Về truy vấn
Truy vấn này trả về các số doanh thu Lotta Latte tại các cửa hàng ở hạt Chicago trong năm 2005 cho những ngày có doanh thu thấp hơn số doanh thu trung bình hàng ngày của Lotta Latte trong cùng thành phố trong năm 2004.
Truy vấn phụ trong ví dụ này là vô hướng – nó tạo ra một giá trị. Sau khi truy vấn phụ đã tính toán số đôla trung bình cho mỗi ngày ở Chicago trong năm 2004, giá trị trung bình này được sử dụng như một ràng buộc trên tất cả các hàng được truy vấn chính trả về. Chỉ các số nào trong năm 2005 thấp hơn so với trung bình năm 2004 mới được hiển thị trong tập kết quả; số trung bình tự nó không thể được hiển thị trừ khi truy vấn phụ được di chuyển vào trong danh sách lựa chọn hay mệnh đề FROM.
Các lưu ý về cách dùng
Thứ tự lôgíc của việc xử lý truy vấn bắt buộc rằng những ràng buộc của mệnh đề WHERE được máy chủ áp dụng ngay lập tức sau khi các bảng trong mệnh đề FROM đã được nối và trước bất kỳ sự tính toán nào với các hàm tập hợp như AVG và SUM, vân vân. Vì thế, bạn không thể sử dụng một trong số các hàm đó trong một điều kiện tìm kiếm đơn giản trong mệnh đề WHERE.
Sử dụng các thuộc tính so sánh
Câu hỏi
Sản phẩm nào đã ghi nhận có tổng doanh thu hàng ngày cao nhất ở Hartford, Connecticut, trong tháng Giêng 2006?
Ví dụ truy vấn
SELECT prod_name, date, dollars FROM aroma.store a, aroma.sales b, aroma.product c, aroma.period d WHERE a.storekey = b.storekey AND c.prodkey = b.prodkey AND c.classkey = b.classkey AND d.perkey = b.perkey AND year = 2006 AND city = 'Hartford' AND month = 'JAN' AND dollars >= ALL (SELECT dollars FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND year = 2006 AND city = 'Hartford' AND month = 'JAN');
Kết quả
Về truy vấn
Ví dụ truy vấn trả về tên sản phẩm được ghi nhận có tổng doanh thu hàng ngày cao nhất tại Hartford, Connecticut, trong tháng Giêng 2006 và ngày tháng cụ thể khi tổng số đó được ghi nhận. Truy vấn có thể được viết lại để trả về tổng số thấp nhất khi thay toán tử lớn hoặc bằng (>=) bằng toán tử nhỏ hơn hoặc bằng (<=).
Thuộc tính ANY/SOME
Bạn cũng có thể đánh giá từng kết quả trả về trong lệnh chọn lựa so với một hoặc nhiều giá trị được một truy vấn phụ lấy ra. Nếu có bất kỳ đánh giá nào là đúng, tập kết quả sẽ được trả về. Các từ khóa ANY và SOME có ý nghĩa giống nhau trong kiểu truy vấn này.
Câu hỏi
Liệt kê các tên của tất cả các cửa hàng nằm trong các thành phố có đặt trụ sở chính.
Truy vấn mẫu (ANY hay SOME)
SELECT store_name FROM aroma.store WHERE city = ANY (SELECT hq_city FROM aroma.market) ORDER BY state, city, store_name;
Kết quả
Các lưu ý về cách dùng
Trước tiên hệ thống thực hiện lệnh SELECT bên trong và lưu trữ danh sách của các giá trị HQ_CITY trong một bảng tạm thời. Sau đó nó đánh giá mỗi hàng từ danh sách SELECT bên ngoài đối với bảng này. Nếu giá trị CITY bằng với một hoặc nhiều hàng của kết quả truy vấn bên trong, nó được trả về trong tập kết quả.
Các thuộc tính so sánh trong các truy vấn phụ
Các thuộc tính ALL, ANY, SOME, và EXISTS rất có ích để biểu diễn các điều kiện trên các nhóm các giá trị được một truy vấn phụ lấy ra. Một thuộc tính so sánh tuyên bố một quan hệ lôgíc giữa hai giá trị: đối với một hàng đã cho, kết quả so sánh là đúng, sai hay không biết. (Các thuộc tính ANY và SOME là đồng nghĩa.)
Để biết thêm chi tiết về các thuộc tính này, xem SQL Reference Guide.
Tóm tắt
Hướng dẫn này mô tả cách viết các truy vấn để so sánh dữ liệu và hiển thị các kết quả theo một định dạng dễ đọc. Nhiều cách tiếp cận khác nhau được minh họa:
- Các biểu thức CASE
- Các truy vấn phụ của mệnh đề FROM
- Các truy vấn phụ của danh sách lựa chọn, bao gồm các truy vấn phụ có tương quan
- Các truy vấn phụ của mệnh đề WHERE
Các truy vấn so sánh
Hướng dẫn này kết thúc bằng việc giới thiệu về các thuộc tính so sánh ALL, ANY, SOME, và EXISTS có thể được sử dụng thay cho các phép so sánh toán học như là các điều kiện trên kết quả truy vấn phụ.
Một số ví dụ phức tạp hơn đã cho thấy cách bao gồm các tính toán vào trong các truy vấn so sánh, như các tỷ lệ phần trăm để biểu diễn phần đóng góp của quý hay phần đóng góp của năm.
Chú ý quan trọng: Nói chung, việc thực hiện truy vấn nhanh chóng hơn khi các truy vấn so sánh sử dụng các biểu thức CASE hơn là các truy vấn phụ. Tuy nhiên, nếu các truy vấn phụ là cần thiết, phương pháp được ưa thích là sử dụng mệnh đề FROM hơn là danh sách lựa chọn. Vì mỗi cơ sở dữ liệu và mỗi truy vấn là khác nhau, bạn nên thử nhiều phương pháp khác nhau trên cơ sở dữ liệu đang dùng.
Tải về
Tài nguyên
Học tập
- Xem "Phụ lục A" của loạt bài này (developerWorks, 08. 2006).
- Đọc "Hướng dẫn đánh giá XML DB2" (developerWorks, 06.2006), Tài liệu hướng dẫn từng bước giới thiệu cho người đọc về máy chủ dữ liệu Viper DB2 trên nền Windows, sử dụng khả năng lưu trữ và tìm kiếm XML (SQL/XML, XQuery) sẵn có để hỗ trợ các ứng dụng thế hệ kế tiếp.
- Xem bài này và bài "Hứng khởi bắt đầu nhanh với DB2 Viper" (developerWorks, 03.2006).
- Tìm hiểu cách làm thế nào để "Truy vấn dữ liệu XML trong DB2 với XQuery" (developerWorks, 04.2006).
- Tìm hiểu cách làm thế nào để "Truy vấn dữ liệu XML trong DB2 với SQL" (developerWorks, 03.2006).
- Đọc Đọc Tập san các hệ thống của IBM và kỷ niệm 10 năm của XML.
- Xem Tài liệu Tham khảo SQL, tập 1 để xem các thông tin bổ sung.
- Xem Tài liệu Tham khảo SQL, tập 2 để xem các thông tin bổ sung.
- Xem Trung tâm thông tin DB2 để khắc phục sự cố.
- Xem Không gian hỗ trợ kỹ thuật XML DB2 để nhận được các liên kết tới hơn 25 bài báo về các khả năng của XML DB2.
Lấy sản phẩm và công nghệ
- Hiện nay bạn có thể sử dụng DB2 miễn phí. Tải xuống DB2 Express-C, một phiên bản DB2 Express miễn phí dành cho cộng đồng nhưng vẫn có đủ các đặc tính dữ liệu cốt lõi giống như phiên bản DB2 Express và cung cấp một cơ sở vững chắc để xây dựng và triển khai các ứng dụng.
Thảo luận
Bình luận
-
Vùng dữ liệu trên developerWorks
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
-
Vùng mã nguồn mở trên developerWorks
Xem các bài viết về HTML, CSS, JavaScript,...
-
Điện toán đám mây
Tìm hiểu về điện toán đám mây

markdown:
## Trước khi bạn bắt đầu
### Về loạt bài này
Loạt bài hướng dẫn này dạy các chủ đề SQL từ cơ bản đến nâng cao và các chủ đề XQuery cơ bản. Nó cũng chỉ ra cách diễn đạt các câu hỏi nghiệp vụ thường gặp bằng các truy vấn cơ sở dữ liệu sử dụng các câu truy vấn SQL hay các câu truy vấn XQuery. Những người phát triển ứng dụng và những người quản trị cơ sở dữ liệu có thể sử dụng hướng dẫn này để nâng cao các kỹ năng truy vấn cơ sở dữ liệu của mình. Các thành viên tham gia sáng kiến học đường IBM có thể sử dụng loạt hướng dẫn này như một phần trong chương trình giảng dạy cơ sở dữ liệu của họ.
Tất cả các ví dụ trong bài này là dựa trên
**Aroma**, một cơ sở dữ
liệu mẫu chứa các dữ liệu doanh thu về các sản phẩm cà phê và chè đã
bán trong các cửa hàng trên khắp nước Mỹ. Mỗi ví dụ gồm có ba
phần:
- Một câu hỏi kinh doanh dưới dạng ngôn ngữ thường ngày
- Một hoặc nhiều ví dụ truy vấn , được biểu diễn bằng SQL hay Xquery
- Một bảng các kết quả trả về từ cơ sở dữ liệu
Hướng dẫn này được thiết kế để cho phép các học viên học tập ngôn ngữ SQL và XQuery. Cũng như học bất cứ cái gì khác, việc bổ sung thêm các bài tập thực hành là rất quan trọng. Dữ liệu và các định nghĩa bảng sẽ tạo điều kiện thuận lợi cho các bài tập thực hành này.
Đối với các sinh viên sử dụng tài liệu này như một phần của khoá học, hãy nhận từ thầy hướng dẫn của mình các chỉ dẫn để kết nối tới cơ sở dữ liệu Aroma và tìm hiểu mọi sự khác biệt giữa hướng dẫn và cài đặt tại máy cục bộ của mình.
Hướng dẫn này được viết cho DB2 9 Express-C trên nền UNIX®, Linux® và Windows® (trước đây gọi là Viper).
### Về hướng dẫn này
Hướng dẫn này thảo luận về các truy vấn dùng để so sánh dữ liệu trong một cơ sở dữ liệu DB2 của IBM. Nó bắt đầu bằng cách minh họa vấn đề mà người viết truy vấn phải đối phó: cách sử dụng SQL để trả về một bảng tính hay báo cáo "tổng hợp" chứ không phải một tập hợp kết quả tiêu chuẩn, sắp xếp theo thứ tự thẳng đứng rất khó đọc. Vấn đề này được giải quyết bằng các biểu thức CASE hoặc các truy vấn phụ.
Giải pháp CASE, được giới thiệu đầu tiên, là một cách đơn giản và ngắn gọn để so sánh các nhóm các giá trị tương tự nhau. Tiếp theo sẽ trình bày một vài ví dụ của mệnh đề FROM và các truy vấn phụ của danh sách chọn lựa. Các truy vấn phụ này có thêm giá trị ở chỗ có thể vừa so sánh dữ liệu từ các nhóm khác nhau và vừa gồm các tính toán đối với các giá trị được so sánh, ví dụ như là các phần trăm đóng góp trong các thời hạn đã cho.
Hướng dẫn này mô tả các truy vấn phụ được tuyên bố như là các điều kiện trong mệnh đề WHERE, có ích cho các truy vấn so sánh đơn giản. Phần cuối cùng cũng mô tả các thuộc tính ALL, EXISTS, và SOME hoặc ANY. Các thuộc tínhnày có thể được dùng để biểu diễn các điều kiện đối với kết quả của truy vấn phụ.
### Kết nối tới một cơ sở dữ liệu
Bạn cần kết nối tới một cơ sở dữ liệu trước khi có thể sử dụng các câu lệnh SQL để truy vấn hay xử lý dữ liệu. Lệnh CONNECT kết hợp một kết nối cơ sở dữ liệu với một tên người sử dụng.
Thông qua người hướng dẫn tìm ra tên cơ sở dữ liệu bạn cần nối tới. Đối với loạt bài này, tên cơ sở dữ liệu là aromadb.
Để kết nối tới cơ sở dữ liệu aromadb, gõ lệnh sau đây vào trong bộ xử lý dòng lệnh DB2:
CONNECT TO aromadb USER userid USING password
Thay thế "userid" và "password" bằng số ID và mật khẩu của người sử dụng mà bạn đã nhận được từ thầy hướng dẫn. Nếu máy không hỏi userid và password thì chỉ cần gõ vào lệnh sau đây:
CONNECT TO aromadb
Thông điệp sau báo cho bạn biết rằng đã tạo kết nối thành công:
Database Connection Information Database server = DB2/NT 9.0.0 SQL authorization ID = USERID Local database alias = AROMADB
Khi đã kết nối được, bạn có thể bắt đầu sử dụng cơ sở dữ liệu.
## So sánh dữ liệu bằng câu hỏi SQL
### Câu hỏi
So sánh doanh thu của cà phê đóng gói tại các cửa hàng ở vùng phía Tây trong năm 2004 ra sao?
#### Ví dụ truy vấn
SELECT store_name, prod_name, SUM(dollars) AS sales FROM aroma.market a, aroma.store b, aroma.period c, aroma.product d, aroma.class e, aroma.sales f WHERE a.mktkey = b.mktkey AND b.storekey = f.storekey AND c.perkey = f.perkey AND d.classkey = e.classkey AND d.classkey = f.classkey AND d.prodkey = f.prodkey AND region like 'West%' AND year = 2004 AND class_type = 'Pkg_coffee' GROUP BY store_name, prod_name ORDER BY store_name, prod_name;
### Kết quả
|STORE_NAME||PROD_NAME||SALES|
|Beaches Brew||Aroma Roma||3483.50|
|Beaches Brew||Cafe Au Lait||3129.50|
|Beaches Brew||Colombiano||2298.25|
|Beaches Brew||Demitasse Ms||4529.25|
|Beaches Brew||Expresso XO||4132.75|
|Beaches Brew||La Antigua||4219.75|
|Beaches Brew||Lotta Latte||3468.00|
|Beaches Brew||NA Lite||4771.00|
|Beaches Brew||Veracruzano||4443.00|
|Beaches Brew||Xalapa Lapa||4304.00|
|Cupertino Coffee Supply||Aroma Roma||4491.00|
|Cupertino Coffee Supply||Cafe Au Lait||4375.50|
|Cupertino Coffee Supply||Colombiano||2653.50|
|Cupertino Coffee Supply||Demitasse Ms||3936.50|
|Cupertino Coffee Supply||Expresso XO||4689.25|
|Cupertino Coffee Supply||La Antigua||2932.00|
|Cupertino Coffee Supply||Lotta Latte||5146.00|
|Cupertino Coffee Supply||NA Lite||4026.00|
|Cupertino Coffee Supply||Veracruzano||3285.00|
|Cupertino Coffee Supply||Xalapa Lapa||5784.00|
|Instant Coffee||Aroma Roma||3485.25|
|Instant Coffee||Cafe Au Lait||3599.50|
|Instant Coffee||Colombiano||3321.75|
|Instant Coffee||Demitasse Ms||5422.25|
|Instant Coffee||Expresso XO||2851.00|
|Instant Coffee||La Antigua||2937.25|
|Instant Coffee||Lotta Latte||4783.50|
|Instant Coffee||NA Lite||3740.00|
|Instant Coffee||Veracruzano||4712.00|
|Instant Coffee||Xalapa Lapa||3698.00|
|...|
### Một truy vấn so sánh đơn giản
Bạn có thể liệt kê doanh thu của một nhóm các sản phẩm tại các cửa hàng cụ thể bằng một lệnh SELECT đơn giản, nhưng định dạng của bảng kết quả làm cho các giá trị khó so sánh được. Ví dụ, tập hợp kết quả của phần trên cho thấy cà phê La Antigua đã bán ra tại một vài cửa hàng trong vùng phía tây, nhưng các con số này rất khó tách ra.
Loại dữ liệu này sẽ dễ so sánh hơn nhiều khi nó được định dạng như một bảng tính. Có hai cách để tạo ra một báo cáo bảng tính, hay báo cáo "tổng hợp": sử dụng các biểu thức CASE hay các truy vấn phụ. Các ví dụ tiếp sau trong hướng dẫn này minh họa cả hai phương pháp viết các truy vấn so sánh.
#### Về truy vấn
Ví dụ truy vấn trả về các số doanh thu năm 2004 của các sản phẩm cà phê đóng gói bán tại mỗi cửa hàng trong vùng phía tây, nhưng định dạng của dữ liệu kết quả làm cho nó trở nên khó so sánh các con số theo từng sản phẩm, theo từng cửa hàng với nhau.
## Sử dụng các biểu thức CASE
### Câu hỏi
So sánh doanh thu của cà phê đóng gói tại các cửa hàng ở vùng phía Tây trong năm 2004 như thế nào?
#### Ví dụ truy vấn
SELECT prod_name, SUM(CASE WHEN store_name = 'Beaches Brew' then dollars else 0 end) AS Beaches, SUM(CASE WHEN store_name = 'Cupertino Coffee Supply' then dollars else 0 end) AS Cupertino, SUM(CASE WHEN store_name = 'Roasters, Los Gatos' then dollars else 0 end) AS RoastLG, SUM(CASE WHEN store_name = 'San Jose Roasting Company' then dollars else 0 end) AS SJRoastCo, SUM(CASE WHEN store_name = 'Java Judy''s' then dollars else 0 end) AS JavaJudy, SUM(CASE WHEN store_name = 'Instant Coffee' then dollars else 0 end) AS Instant FROM aroma.market a, aroma.store b, aroma.period c, aroma.product d, aroma.class e, aroma.sales f WHERE a.mktkey = b.mktkey AND b.storekey = f.storekey AND c.perkey = f.perkey AND d.classkey = e.classkey AND d.classkey = f.classkey AND d.prodkey = f.prodkey AND region LIKE 'West%' AND year = 2004 AND class_type = 'Pkg_coffee' GROUP BY prod_name ORDER BY prod_name;
### Kết quả
|PROD_NAME||BEACHES||CUPERTINO||ROASTLG||SJROASTCO||JAVAJUDY||INSTANT|
|Aroma Roma||3483.50||4491.00||4602.00||4399.25||3748.25||3485.25|
|Cafe Au Lait||3129.50||4375.50||4199.00||3620.00||4864.50||3599.50|
|Colombiano||2298.25||2653.50||4205.00||3530.75||3509.00||3321.75|
|Demitasse Ms||4529.25||3936.50||4347.75||5699.00||6395.25||5422.25|
|Expresso XO||4132.75||4689.25||4234.50||3811.00||5012.25||2851.00|
|La Antigua||4219.75||2932.00||3447.50||4323.00||2410.25||2937.25|
|Lotta Latte||3468.00||5146.00||4469.50||5103.50||4003.00||4783.50|
|NA Lite||4771.00||4026.00||3250.00||2736.00||4791.00||3740.00|
|Veracruzano||4443.00||3285.00||4467.00||3856.00||4510.00||4712.00|
|Xalapa Lapa||4304.00||5784.00||3906.00||3645.00||3182.00||3698.00|
### Một giải pháp để so sánh dữ liệu: các biểu thức CASE
Một cách hiệu quả và ngắn gọn để hiển thị các giá trị so sánh theo một định dạng bảng tính dễ đọc là sử dụng các biểu thức CASE trong danh sách chọn lựa. Mỗi phép tính CASE đánh giá một biểu thức đã chỉ rõ và cung cấp một giá trị khác nhau, phụ thuộc vào một điều kiện nhất định có được đáp ứng hay không.
### Cú pháp CASE
Nói chung, bạn xây dựng một truy vấn so sánh CASE bằng cách chỉ rõ những ràng buộc trên toàn bộ miền mà trên đó các kết quả được sinh ra trong mệnh đề WHERE của truy vấn chính hay là truy vấn ngoài. Sau đó, bạn phân chia kết quả thành các tập con với một biểu thức CASE trong danh sách lựa chọn:
CASE WHEN search_condition THEN result1 ELSE result2 END AS col_alias
|search_condition||Một điều kiện lôgíc được đánh giá đúng hay sai.|
|result1||Một giá trị được dùng khi search_condition là đúng.|
|result2||Một giá trị mặc định khi search_condition là sai.|
Chú ý quan trọng: Một biểu thức CASE có thể ở một trong hai
dạng: đơn giản hay có tìm kiếm. Ví dụ này sử dụng dạng có tìm
kiếm. Để biết thêm chi tiết, tham khảo
*. SQL Reference Guide (Hướng
dẫn tham khảo SQL) *
#### Về truy vấn
Truy vấn này đặt ra cùng một câu hỏi kinh doanh giống như truy vấn trước trong hướng dẫn này. Tuy nhiên, trong trường hợp này biểu thức CASE được dùng để tạo ra sáu cột khác nhau trong tập hợp kết quả. Tập hợp kết quả này có chứa tổng các giá trị đôla, một cột cho mỗi cửa hàng.
## Sử dụng các truy vấn phụ trong mệnh đề FROM
### Câu hỏi
Doanh thu sản phẩm tại San Jose trong tháng Giêng 2004 so với doanh thu sản phẩm này hàng năm trong cùng thành phố trong cùng năm là như thế nào?
#### Ví dụ truy vấn
SELECT sales1.product, jan_04_sales, total_04_sales FROM (SELECT prod_name, SUM(dollars) FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND c.year = 2004 AND c.month = 'JAN' AND d.city LIKE 'San J%' GROUP BY a.prod_name) AS sales1(product, jan_04_sales) , (SELECT prod_name, SUM(dollars) AS total_04_sales FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND c.year = 2004 AND d.city LIKE 'San J%' GROUP BY a.prod_name) AS sales2(product, total_04_sales) WHERE sales1.product = sales2.product ORDER BY sales1.product;
### Kết quả
|PRODUCT||JAN_04_SALES||TOTAL_04_SALES|
|Aroma Roma||1653.00||21697.50|
|Aroma Sheffield Steel Teapot||120.00||1122.00|
|Aroma Sounds Cassette||58.50||866.00|
|Aroma baseball cap||7.95||2960.15|
|Aroma t-shirt||470.85||4470.50|
|Assam Gold Blend||652.00||11375.00|
|Assam Grade A||352.00||5429.00|
|Breakfast Blend||608.25||6394.75|
|Cafe Au Lait||1936.50||24050.50|
|Colombiano||2148.00||22528.50|
|Darjeeling Number 1||867.50||8590.00|
|Darjeeling Special||1355.00||17787.50|
|Demitasse Ms||2163.00||35523.50|
|Earl Grey||540.50||6608.50|
|English Breakfast||393.00||5365.50|
|Espresso Machine Italiano||899.55||4397.80|
|Expresso XO||2935.50||27362.00|
|French Press, 2-Cup||104.65||1196.00|
|French Press, 4-Cup||19.95||1109.20|
|Gold Tips||440.00||5381.50|
|Irish Breakfast||703.25||7455.50|
|...|
### Một giải pháp linh hoạt hơn: Các truy vấn phụ trong mệnh đề FROM
Một truy vấn phụ là biểu thức truy vấn bất kỳ trong dấu ngoặc xuất hiện
bên trong câu hỏi khác. Một truy vấn phụ đôi khi được gọi là một
*truy vấn bên trong*. Truy vấn bên trong hoạt động bên trong
*truy vấn phía ngoài*, hay như là *truy vấn con* của một
*truy vấn cha mẹ*.
#### Về truy vấn
Một giá trị thường được so sánh với một tổng của một tập hợp các giá
trị. Ví dụ truy vấn so sánh doanh thu sản phẩm ở San Jose trong
*tháng Giêng* 2004 với doanh thu ở San Jose *suốt* cả
năm 2004. Loại truy vấn này yêu cầu *các phép gộp hỗn hợp*; bởi
vậy, không thể viết loại truy vấn đó bằng các biểu thức CASE vì biểu
thức CASE phải hoạt động theo các giá trị bên trong một nhóm đơn hay
một phạm vi. Thay vào đó, các truy vấn phụ trong mệnh đề FROM được
dùng để thực hiện so sánh.
Chú ý quan trọng: Bất kỳ truy vấn nào mà có thể được biểu diễn
như một truy vấn phụ trong mệnh đề FROM cũng có thể được biểu
diễn như một truy vấn phụ trong danh sách chọn lựa, như sẽ cho
thấy ở phần sau trong hướng dẫn này.
#### Các lưu ý về cách dùng
Ví dụ truy vấn dựa vào tính linh hoạt của
*biểu thức truy vấn*
trong SQL tiêu chuẩn để kết nối các kết quả của hai truy vấn phụ. Để
biết thêm thông tin chi tiết về các biểu thức truy vấn, xem *. SQL Reference Guide*
Các bảng dẫn xuất từ kết quả đánh giá của các truy vấn phụ có thể được kết nối với các tham chiếu bảng khác. Với mục đích này, một truy vấn phụ trong mệnh đề FROM phải có một tên tương quan. Ví dụ, các truy vấn phụ trong ví dụ này được đánh giá thành các bảng sau đây:
sales1(product, jan_04_sales) sales2(product, total_04_sales)
Phép nối các bảng này (qua cột
**Product**) tạo ra một bảng phát
sinh không tên có ba cột, là nguồn của ba mục của danh sách chọn lựa
trong truy vấn chính:
product, jan_04_sales, total_04_sales
## Thực hiện các tính toán và các so sánh
### Câu hỏi
Doanh thu sản phẩm trong Tháng Giêng 2004 tại San Jose chiếm bao nhiêu phần trăm của doanh thu sản phẩm hàng năm trong cùng thành phố? Mười sản phẩm bán chạy nhất theo tỷ lệ phần trăm đó là gì?
#### Ví dụ truy vấn
SELECT sales1.product, jan_04_sales, total_04_sales, DEC((100.00 * jan_04_sales/total_04_sales),7,2) AS pct_of_04 FROM (SELECT a1.prod_name, SUM(dollars) FROM aroma.product a1, aroma.sales b1, aroma.period c1, aroma.store d1 WHERE a1.prodkey = b1.prodkey AND a1.classkey = b1.classkey AND c1.perkey = b1.perkey AND d1.storekey = b1.storekey AND c1.year = 2004 AND c1.month = 'JAN' AND d1.city LIKE 'San J%' GROUP BY a1.prod_name) AS sales1(product, jan_04_sales) , (SELECT a2.prod_name, SUM(dollars) FROM aroma.product a2, aroma.sales b2, aroma.period c2, aroma.store d2 WHERE a2.prodkey = b2.prodkey AND a2.classkey = b2.classkey AND c2.perkey = b2.perkey AND d2.storekey = b2.storekey AND c2.year = 2004 AND d2.city LIKE 'San J%' GROUP BY a2.prod_name) AS sales2(product, total_04_sales) WHERE sales1.product = sales2.product ORDER BY pct_of_04 DESC FETCH FIRST 10 ROWS ONLY;
### Kết quả
|PRODUCT||JAN_04_SALES||TOTAL_04_SALES||PCT_OF_04|
|Espresso Machine Italiano||899.55||4397.80||20.45|
|La Antigua||2643.25||22244.50||11.88|
|Expresso XO||2935.50||27362.00||10.72|
|Aroma Sheffield Steel Teapot||120.00||1122.00||10.69|
|Aroma t-shirt||470.85||4470.50||10.53|
|Lotta Latte||3195.00||31200.00||10.24|
|Darjeeling Number 1||867.50||8590.00||10.09|
|Colombiano||2148.00||22528.50||9.53|
|Breakfast Blend||608.25||6394.75||9.51|
|Irish Breakfast||703.25||7455.50||9.43|
### Các tính toán với các truy vấn phụ của mệnh đề FROM
Tập hợp kết quả của một truy vấn so sánh có thể được sử dụng như dữ
liệu nguồn cho các tính toán khác nhau. Ví dụ, một tổng doanh thu hàng
tháng của một sản phẩm có thể được biểu diễn như
*phần đóng góp*
trong doanh thu hàng năm với cách tính toán tỷ lệ phần trăm đơn
giản:
100.00 * monthly_sales / annual_sales
Các truy vấn phụ trong mệnh đề FROM có thể dùng để tính toán các tỷ lệ phần trăm hay phần đóng góp theo thị trường, theo sản phẩm và theo các khoảng thời gian.
#### Về truy vấn
Dựa vào ví dụ trước, truy vấn này tính toán các số doanh thu hàng tháng
cho từng sản phẩm ở San Jose như phần đóng góp hoặc tỷ lệ phần trăm
của doanh thu hàng năm của sản phẩm đó trong cùng thành phố. Tập hợp
kết quả có thể tạo ra một danh sách xếp hạng dựa vào quyết định
*sắp
xếp* của bạn.
Các con số trong cột
**Pct_of_04** không tổng cộng thành 100 vì các
con số này tương ứng với tỷ lệ phần trăm của một tháng trong một năm
cho doanh thu của mỗi sản phẩm riêng lẻ, không phải tỷ lệ phần trăm
của doanh thu hàng tháng trong toàn bộ doanh thu hàng năm.
Biểu đồ này cho thấy doanh thu trong tháng Giêng chiếm một vài phần trăm của doanh thu suốt cả năm. Ví dụ, các ấm chè được bán trong tháng Giêng chiếm10.69% của tổng doanh thu ấm chè năm.
## Sử dụng các truy vấn phụ trong danh sách SELECT
### Câu hỏi
Trong những ngày nào của tháng Mười Hai năm 2005 có các số doanh thu Lotta Latte tại công ty Roasting San Jose thấp hơn số doanh thu trung bình hàng ngày của cùng sản phẩm tại cùng cửa hàng trong tháng Mười Hai 2004? Hiển thị trung bình hằng ngày cho năm 2004 theo một cột riêng.
#### Ví dụ truy vấn
SELECT prod_name, store_name, date, dollars AS sales_05, (SELECT DEC(AVG(dollars),7,2) FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND year = 2004 AND month = 'DEC' AND store_name = 'San Jose Roasting Company' AND prod_name LIKE 'Lotta%') AS avg_04 FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND prod_name LIKE 'Lotta%' AND store_name = 'San Jose Roasting Company' AND year = 2005 AND month = 'DEC' AND dollars < (SELECT AVG(dollars) FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND year = 2004 AND month = 'DEC' AND store_name = 'San Jose Roasting Company' AND prod_name LIKE 'Lotta%');
### Kết quả
|PROD_NAME||STORE_NAME||DATE||SALES_05||AVG_04|
|Lotta Latte||San Jose Roasting Company||Dec 8, 2005||153.00||154.72|
|Lotta Latte||San Jose Roasting Company||Dec 27, 2005||144.50||154.72|
### So sánh bằng các truy vấn phụ của danh sách chọn lựa
Một truy vấn phụ có thể xuất hiện trong danh sách chọn lựa của một truy
vấn chính chỉ khi nó trả về một hàng hay không trả về hàng nào. Loại
truy vấn phụ này, gọi là
*truy vấn phụ vô hướng*, có ích cho các
so sánh kiểu bảng tính trong đó một loạt các giá trị được truy vấn
chính trả về so sánh với một giá trị do truy vấn phụ trả về.
#### Về truy vấn
Truy vấn phụ của ví dụ này trả về các số doanh thu Lotta Latte hằng
ngày tại công ty Roasting San Jose năm 2005 trong trường hợp số doanh
thu đó thấp hơn số doanh thu trung bình hàng ngày tại cùng cửa hàng
trong thời gian 2004. Cột
**Avg_04** có chứa chỉ một giá trị đơn
lặp lại là giá trị trung bình năm 2004; giá trị giống nhau này sẽ xuất
hiện trong cột đó bất kể số lượng các hàng trong tập hợp kết quả.
Cùng một truy vấn phụ giống như vậy xuất hiện hai lần trong truy vấn chính:
- Một lần như định nghĩa cột trong danh sách lựa chọn
- Một lần như một toán hạng của toán tử nhỏ hơn (<) trong một điều kiện của mệnh đề WHERE
Truy vấn này được xử lý theo thứ tự sau:
- Truy vấn phụ thứ hai, định nghĩa điều kiện tìm kiếm trong mệnh đề WHERE của truy vấn chính, được thực hiện.
- Giá trị dẫn xuất từ truy vấn phụ thứ hai được chèn vào vào trong mệnh đề WHERE của truy vấn chính.
- Truy vấn phụ của danh sách lựa chọn được thực hiện.
- Truy vấn chính được thực hiện.
#### Các lưu ý về cách dùng
Hàm vô hướng DEC được sử dụng trên cột
**Avg_04** của tập kết quả để
cắt bớt các số doanh thu trung bình:
DEC(AVG(dollars),7,2)
## Sử dụng các truy vấn phụ có tương quan
### Câu hỏi
Doanh thu của từng sản phẩm riêng lẻ ở San Jose trong tháng Giêng 2004 so với doanh thu hàng năm trong cùng thành phố trong cùng năm là bao nhiêu?
#### Ví dụ truy vấn
SELECT p1.prod_name, SUM(s1.dollars) AS jan_04_sales, (SELECT SUM(s2.dollars) FROM aroma.product p2, aroma.sales s2, aroma.period d2, aroma.store r2 WHERE p2.prodkey = s2.prodkey AND p2.classkey = s2.classkey AND d2.perkey = s2.perkey AND r2.storekey = s2.storekey AND p1.prod_name = p2.prod_name AND d1.year = d2.year AND r1.city = r2.city) AS total_04_sales FROM aroma.store r1, aroma.sales s1, aroma.product p1, aroma.period d1 WHERE p1.prodkey = s1.prodkey AND p1.classkey = s1.classkey AND d1.perkey = s1.perkey AND r1.storekey = s1.storekey AND year = 2004 AND month = 'JAN' AND city LIKE 'San J%' GROUP BY p1.prod_name, d1.year, r1.city ORDER BY p1.prod_name;
### Kết quả
|PROD_NAME||JAN_04_SALES||TOTAL_04_SALES|
|Aroma Roma||1653.00||21697.50|
|Aroma Sheffield Steel Teapot||120.00||1122.00|
|Aroma Sounds Cassette||58.50||866.00|
|Aroma baseball cap||7.95||2960.15|
|Aroma t-shirt||470.85||4470.50|
|Assam Gold Blend||652.00||11375.00|
|Assam Grade A||352.00||5429.00|
|Breakfast Blend||608.25||6394.75|
|Cafe Au Lait||1936.50||24050.50|
|Colombiano||2148.00||22528.50|
|Darjeeling Number 1||867.50||8590.00|
|Darjeeling Special||1355.00||17787.50|
|Demitasse Ms||2163.00||35523.50|
|Earl Grey||540.50||6608.50|
|English Breakfast||393.00||5365.50|
|Espresso Machine Italiano||899.55||4397.80|
|Expresso XO||2935.50||27362.00|
|French Press, 2-Cup||104.65||1196.00|
|French Press, 4-Cup||19.95||1109.20|
|Gold Tips||440.00||5381.50|
|Irish Breakfast||703.25||7455.50|
|La Antigua||2643.25||22244.50|
|Lotta Latte||3195.00||31200.00|
|NA Lite||1319.00||27457.00|
|...|
### Các truy vấn phụ có tương quan trong danh sách lựa chọn
Tuy các truy vấn phụ của danh sách lựa chọn phải trả về một giá trị đơn
hay không có giá trị nào, thì các truy vấn phụ đó vẫn có thể được thực
hiện
*nhiều hơn một lần* do tham khảo đến các kết quả được truy
vấn chính trả về. Theo cách này *các truy vấn phụ có tương quan*
như vậy trong danh sách lựa chọn có thể cho cùng một kết quả như các
truy vấn phụ trong mệnh đề FROM.
Một truy vấn phụ có tương quan có quan hệ chặt chẽ với truy vấn chính
thông qua tham khảo chéo tới các giá trị cụ thể trong các hàng được
truy vấn chính lấy ra. Ví dụ, một truy vấn phụ tương quan có thể tham
chiếu các giá trị trong cột
**Month** của truy vấn chính; bởi vậy,
truy vấn phụ trả về một giá trị mới mỗi khi giá trị của cột
**Month** thay đổi. Các tên tương quan của bảng được gán trong
mệnh đề FROM biểu diễn các tham khảo chéo này.
#### Về truy vấn
Ví dụ truy vấn đưa ra câu hỏi kinh doanh giống như truy vấn trước đó, nhưng lại đặt truy vấn phụ trong danh sách lựa chọn thay vì trong mệnh đề FROM. Truy vấn so sánh doanh thu của các sản phẩm ở San Jose trong tháng giêng 2004 với doanh thu hàng năm của các sản phẩm ở San Jose trong cùng năm.
Để làm cho truy vấn phụ có khả năng trả về một loạt các giá trị thay
cho một giá trị cố định ba
*tham khảo chéo* gắn truy vấn phụ với
truy vấn chính:
p1.prod_name = p2.prod_name d1.year = d2.year r1.city = r2.city
Các tên tương quan p2, d2, và r2, được định nghĩa trong mệnh đề FROM
của truy vấn phụ, loại bỏ tình trạng không rõ ràng. Mỗi điều kiện
tương quan tham chiếu một sản phẩm, năm và thành phố cụ thể trong hàng
hiện đang được câu hỏi chính xử lý. Các tham khảo chéo này đôi khi
được gọi là
*các tham khảo ngoài.*
#### Các lưu ý về cách dùng
Khi một hàm gộp xuất hiện trong danh sách lựa chọn của truy vấn chính,
cần phải có một mệnh đề GROUP BY. Các tên cột được tham chiếu trong
một điều kiện tương quan của một truy vấn phụ phải xuất hiện trong
mệnh đề GROUP BY của truy vấn chính; vì vậy, các cột sau đây phải được
liệt kê trong mệnh đề GROUP BY cũng như cột
**Prod_Name**:
d1.year, r1.city
## Sử dụng các tham khảo chéo
### Câu hỏi
Doanh thu hàng tháng của Lotta Latte ở San Jose trong ba tháng đầu tiên của 2005 và 2004 là bao nhiêu?
#### Ví dụ truy vấn
SELECT q.prod_name, e.month, SUM(dollars) AS sales_05, (SELECT SUM(dollars) FROM aroma.store t, aroma.sales s, aroma.product p, aroma.period d WHERE t.storekey = s.storekey AND p.classkey = s.classkey AND p.prodkey = s.prodkey AND d.perkey = s.perkey AND d.month = e.month AND d.year = e.year-1 AND p.prod_name = q.prod_name AND t.city = u.city) AS sales_04 FROM aroma.store u, aroma.product q, aroma.period e, aroma.sales l WHERE u.storekey = l.storekey AND q.classkey = l.classkey AND q.prodkey = l.prodkey AND e.perkey = l.perkey AND qtr = 'Q1_05' AND prod_name LIKE 'Lotta Latte%' AND city like 'San J%' GROUP BY q.prod_name, e.month, e.year, u.city;
### Kết quả
|PROD_NAME||MONTH||SALES_05||SALES_04|
|Lotta Latte||FEB||3213.50||4239.50|
|Lotta Latte||JAN||1611.00||3195.00|
|Lotta Latte||MAR||2510.50||2980.50|
### Các tham khảo chéo với các biểu thức
Các tham khảo chéo trong các truy vấn phụ không chỉ hạn chế tới các tên cột đầy đủ; chúng có thể cũng là các biểu thức. Ví dụ, các biểu thức sau đây là các tham khảo chéo hợp lệ:
period.year-1 (previous year) period.quarter-1 (previous quarter)
Loại tham khảo chéo tổng quát hóa này làm đơn giản hóa việc thiết kế các công cụ ứng dụng phía khách.
#### Về truy vấn
Truy vấn này trả về doanh thu Lotta Latte hàng tháng ở San Jose trong ba tháng đầu tiên của cả năm 2005 lẫn 2004. Giải pháp tương quan là kết quả mong đợi có chứa dữ liệu cùng các tháng nhưng khác năm.
Mệnh đề FROM của truy vấn chính gán các tên tương quan cho tất cả các bảng có liên kết với nhau:
FROM aroma.store u, aroma.product q, aroma.period e, aroma.sales l
Truy vấn phụ sau đó gắn việc thực hiện của nó với việc thực hiện truy vấn chính dựa vào các điều kiện sau trong mệnh đề WHERE:
d.month = e.month d.year = e.year-1 p.prod_name = q.prod_name t.city = u.city
Do truy vấn chính lấy ra các hàng nên các giá trị của mỗi cột trong
truy vấn cha mẹ có thể thay đổi, và các điều kiện tương quan truyền sự
thay đổi này tới truy vấn phụ. Mối tham khảo chéo tới năm trước có
dạng
*year-1* làm tổng quát hóa truy vấn phụ bằng cách loại bỏ
một giá trị không đổi (2004).
Muốn thay đổi truy vấn để báo cáo theo các thời hạn năm khác, chỉ cần thay đổi ràng buộc về năm trong truy vấn chính.
#### Các lưu ý về cách dùng
Mỗi khi có thể, hãy tổng quát hóa các truy vấn phụ có tương quan và giảm thiểu sự tương tác của người sử dụng bằng cách dùng các tham khảo chéo dạng biểu thức.
## Tính toán các tỷ lệ phần trăm của quý và năm
### Câu hỏi
Các tổng số doanh thu hàng tháng trong quý đầu tiên của năm 2004 của các sản phẩm đã bán theo các túi một bảng ở San Jose là bao nhiêu? Tỷ lệ phần trăm của doanh thu mỗi tháng so với cả quý và so với cả năm là bao nhiêu?
#### Ví dụ truy vấn
SELECT pj.prod_name, dj.month, SUM(dollars) AS mon_sales_04, DEC(100 * DEC(SUM(dollars))/ (SELECT SUM(si.dollars) FROM aroma.store ri, aroma.sales si, aroma.product pi, aroma.period di WHERE si.storekey = ri.storekey AND si.classkey = pi.classkey AND si.prodkey = pi.prodkey AND si.perkey = di.perkey AND di.qtr = dj.qtr AND di.year = dj.year AND pi.prod_name = pj.prod_name AND pi.pkg_type = pj.pkg_type AND ri.city = rj.city), 7, 2) AS pct_qtr1, DEC(100 * DEC(SUM(dollars))/ (SELECT SUM(si.dollars) FROM aroma.store ri, aroma.sales si, aroma.product pi, aroma.period di WHERE si.storekey = ri.storekey AND si.classkey = pi.classkey AND si.prodkey = pi.prodkey AND si.perkey = di.perkey AND di.year = dj.year AND pi.prod_name = pj.prod_name AND pi.pkg_type = pj.pkg_type AND ri.city = rj.city), 7, 2) AS pct_yr FROM aroma.store rj, aroma.sales sj, aroma.product pj, aroma.period dj WHERE sj.storekey = rj.storekey AND sj.classkey = pj.classkey AND sj.prodkey = pj.prodkey AND sj.perkey = dj.perkey AND rj.city = 'San Jose' AND dj.year = 2004 AND dj.qtr = 'Q1_04' AND pkg_type = 'One-pound bag' GROUP BY pj.prod_name, dj.month, dj.qtr, dj.year, pj.pkg_type, rj.city ORDER BY pj.prod_name, pct_qtr1 desc;
### Kết quả
|PROD_NAME||MONTH||MON_SALES_04||PCT_QTR1||PCT_YR|
|Aroma Roma||FEB||688.75||39.87||8.72|
|Aroma Roma||JAN||594.50||34.42||7.53|
|Aroma Roma||MAR||442.25||25.61||5.60|
|Cafe Au Lait||MAR||742.00||40.61||10.27|
|Cafe Au Lait||JAN||600.50||32.84||8.31|
|Cafe Au Lait||FEB||484.50||26.49||6.70|
|...|
### Tính toán với các truy vấn phụ của danh sách lựa chọn
Các tỷ lệ phần trăm hàng tháng so với cả quý, cả năm hay các kỳ hạn khác có thể được tính toán với một truy vấn phụ trong danh sách lựa chọn. Truy vấn chính lấy ra các số doanh thu hàng tháng và hai truy vấn phụ lấy ra các con số doanh thu hàng quý và hàng năm. Các tỷ lệ phần trăm hàng tháng chỉ cần các tính toán đơn giản: các tỷ số của doanh thu hàng tháng so với quý và doanh thu hàng tháng so với năm.
#### Về truy vấn
Ví dụ truy vấn này tính toán các tỷ lệ phần trăm doanh thu hàng tháng so với quý và doanh thu hàng tháng so với năm cho các sản phẩm cà phê đã chọn được bán ở San Jose trong quý 1 năm 2004. Sau khi tính toán các tỷ lệ phần trăm, truy vấn này sắp xếp bảng kết quả theo sản phẩm và tỷ lệ phần trăm hàng quý theo thứ tự giảm dần.
## Sử dụng các truy vấn phụ trong mệnh đề WHERE
### Câu hỏi
Trong những ngày nào trong tháng Sáu năm 2005 các số doanh thu Lotta Latte tại các cửa hàng ở hạt Chicago thấp hơn số doanh thu trung bình hàng ngày của cùng sản phẩm trong hạt này trong tháng Sáu 2004?
#### Ví dụ truy vấn
SELECT prod_name, district, date, dollars AS sales_05 FROM aroma.market a, aroma.store b, aroma.sales c, aroma.product d, aroma.period e WHERE a.mktkey = b.mktkey AND b.storekey = c.storekey AND d.classkey = c.classkey AND d.prodkey = c.prodkey AND e.perkey = c.perkey AND prod_name like 'Lotta%' AND district like 'Chic%' AND year = 2005 AND month = 'JUN' AND dollars < (SELECT AVG(dollars) FROM aroma.market a, aroma.store b, aroma.sales c, aroma.product d, aroma.period e WHERE a.mktkey = b.mktkey AND b.storekey = c.storekey AND d.classkey = c.classkey AND d.prodkey = c.prodkey AND e.perkey = c.perkey AND prod_name like 'Lotta%' AND district like 'Chic%' AND year = 2004 AND month = 'JUN') ORDER BY date;
### Kết quả
|PROD_NAME||DISTRICT||DATE||SALES_05|
|Lotta Latte||Chicago||Jun 7, 2005||76.50|
|Lotta Latte||Chicago||Jun 10, 2005||59.50|
|Lotta Latte||Chicago||Jun 16, 2005||42.50|
|Lotta Latte||Chicago||Jun 17, 2005||76.50|
|Lotta Latte||Chicago||Jun 29, 2005||110.50|
#### Về truy vấn
Truy vấn này trả về các số doanh thu Lotta Latte tại các cửa hàng ở hạt Chicago trong năm 2005 cho những ngày có doanh thu thấp hơn số doanh thu trung bình hàng ngày của Lotta Latte trong cùng thành phố trong năm 2004.
Truy vấn phụ trong ví dụ này là vô hướng – nó tạo ra một giá trị. Sau khi truy vấn phụ đã tính toán số đôla trung bình cho mỗi ngày ở Chicago trong năm 2004, giá trị trung bình này được sử dụng như một ràng buộc trên tất cả các hàng được truy vấn chính trả về. Chỉ các số nào trong năm 2005 thấp hơn so với trung bình năm 2004 mới được hiển thị trong tập kết quả; số trung bình tự nó không thể được hiển thị trừ khi truy vấn phụ được di chuyển vào trong danh sách lựa chọn hay mệnh đề FROM.
#### Các lưu ý về cách dùng
Thứ tự lôgíc của việc xử lý truy vấn bắt buộc rằng những ràng buộc của mệnh đề WHERE được máy chủ áp dụng ngay lập tức sau khi các bảng trong mệnh đề FROM đã được nối và trước bất kỳ sự tính toán nào với các hàm tập hợp như AVG và SUM, vân vân. Vì thế, bạn không thể sử dụng một trong số các hàm đó trong một điều kiện tìm kiếm đơn giản trong mệnh đề WHERE.
## Sử dụng các thuộc tính so sánh
### Câu hỏi
Sản phẩm nào đã ghi nhận có tổng doanh thu hàng ngày cao nhất ở Hartford, Connecticut, trong tháng Giêng 2006?
#### Ví dụ truy vấn
SELECT prod_name, date, dollars FROM aroma.store a, aroma.sales b, aroma.product c, aroma.period d WHERE a.storekey = b.storekey AND c.prodkey = b.prodkey AND c.classkey = b.classkey AND d.perkey = b.perkey AND year = 2006 AND city = 'Hartford' AND month = 'JAN' AND dollars >= ALL (SELECT dollars FROM aroma.product a, aroma.sales b, aroma.period c, aroma.store d WHERE a.prodkey = b.prodkey AND a.classkey = b.classkey AND c.perkey = b.perkey AND d.storekey = b.storekey AND year = 2006 AND city = 'Hartford' AND month = 'JAN');
### Kết quả
|PROD_NAME||DATE||DOLLARS|
|NA Lite||2006-01-23||414.00|
#### Về truy vấn
Ví dụ truy vấn trả về tên sản phẩm được ghi nhận có tổng doanh thu hàng ngày cao nhất tại Hartford, Connecticut, trong tháng Giêng 2006 và ngày tháng cụ thể khi tổng số đó được ghi nhận. Truy vấn có thể được viết lại để trả về tổng số thấp nhất khi thay toán tử lớn hoặc bằng (>=) bằng toán tử nhỏ hơn hoặc bằng (<=).
### Thuộc tính ANY/SOME
Bạn cũng có thể đánh giá từng kết quả trả về trong lệnh chọn lựa so với một hoặc nhiều giá trị được một truy vấn phụ lấy ra. Nếu có bất kỳ đánh giá nào là đúng, tập kết quả sẽ được trả về. Các từ khóa ANY và SOME có ý nghĩa giống nhau trong kiểu truy vấn này.
### Câu hỏi
Liệt kê các tên của tất cả các cửa hàng nằm trong các thành phố có đặt trụ sở chính.
### Truy vấn mẫu (ANY hay SOME)
SELECT store_name FROM aroma.store WHERE city = ANY (SELECT hq_city FROM aroma.market) ORDER BY state, city, store_name;
### Kết quả
|STORE_NAME|
|Java Judy's|
|Beaches Brew|
|Instant Coffee|
|...|
|East Coast Roast|
|Texas Teahouse|
|Coffee Brewers|
#### Các lưu ý về cách dùng
Trước tiên hệ thống thực hiện lệnh SELECT bên trong và lưu trữ danh sách của các giá trị HQ_CITY trong một bảng tạm thời. Sau đó nó đánh giá mỗi hàng từ danh sách SELECT bên ngoài đối với bảng này. Nếu giá trị CITY bằng với một hoặc nhiều hàng của kết quả truy vấn bên trong, nó được trả về trong tập kết quả.
### Các thuộc tính so sánh trong các truy vấn phụ
Các thuộc tính ALL, ANY, SOME, và EXISTS rất có ích để biểu diễn các điều kiện trên các nhóm các giá trị được một truy vấn phụ lấy ra. Một thuộc tính so sánh tuyên bố một quan hệ lôgíc giữa hai giá trị: đối với một hàng đã cho, kết quả so sánh là đúng, sai hay không biết. (Các thuộc tính ANY và SOME là đồng nghĩa.)
|THUỘC TÍNH||ĐÁNH GIÁ ĐÚNG KHI||KHI KHÔNG CÓ GIÁ TRỊ NÀO ĐƯỢC TRẢ VỀ|
|ALL||Kết quả so sánh là đúng cho tất cả các giá trị được truy vấn phụ trả về.||Đánh giá là đúng.|
|ANY, SOME||Kết quả so sánh là đúng cho ít nhất một trong số các giá trị được truy vấn phụ gửi về.||Đánh giá là sai.|
|EXISTS||Truy vấn phụ tạo ra ít nhất một hàng.||Đánh giá là sai.|
Để biết thêm chi tiết về các thuộc tính này, xem
*. SQL Reference Guide*
## Tóm tắt
Hướng dẫn này mô tả cách viết các truy vấn để so sánh dữ liệu và hiển thị các kết quả theo một định dạng dễ đọc. Nhiều cách tiếp cận khác nhau được minh họa:
- Các biểu thức CASE
- Các truy vấn phụ của mệnh đề FROM
- Các truy vấn phụ của danh sách lựa chọn, bao gồm các truy vấn phụ có tương quan
- Các truy vấn phụ của mệnh đề WHERE
### Các truy vấn so sánh
Hướng dẫn này kết thúc bằng việc giới thiệu về các thuộc tính so sánh ALL, ANY, SOME, và EXISTS có thể được sử dụng thay cho các phép so sánh toán học như là các điều kiện trên kết quả truy vấn phụ.
Một số ví dụ phức tạp hơn đã cho thấy cách bao gồm các tính toán vào trong các truy vấn so sánh, như các tỷ lệ phần trăm để biểu diễn phần đóng góp của quý hay phần đóng góp của năm.
Chú ý quan trọng: Nói chung, việc thực hiện truy vấn nhanh
chóng hơn khi các truy vấn so sánh sử dụng các biểu thức CASE
hơn là các truy vấn phụ. Tuy nhiên, nếu các truy vấn phụ là
cần thiết, phương pháp được ưa thích là sử dụng mệnh đề FROM
hơn là danh sách lựa chọn. Vì mỗi cơ sở dữ liệu và mỗi truy
vấn là khác nhau, bạn nên thử nhiều phương pháp khác nhau trên
cơ sở dữ liệu đang dùng.
## Tải về
|Mô tả||Tên||Kích thước|
|Cơ sở dữ liệu Aroma|
## Tài nguyên
### Học tập
- Xem "
[Phụ lục A](http://www.ibm.com/developerworks/vn/edu/dm0607cao/index.html)" của loạt bài này (developerWorks, 08. 2006).
- Đọc "
[Hướng dẫn đánh giá XML DB2](http://www.ibm.com/developerworks/edu/dm-dw-dm-0606leung-i.html?S_TACT=105AGY75)" (developerWorks, 06.2006), Tài liệu hướng dẫn từng bước giới thiệu cho người đọc về máy chủ dữ liệu Viper DB2 trên nền Windows, sử dụng khả năng lưu trữ và tìm kiếm XML (SQL/XML, XQuery) sẵn có để hỗ trợ các ứng dụng thế hệ kế tiếp.
- Xem bài này và bài "
[Hứng khởi bắt đầu nhanh với DB2 Viper](http://www.ibm.com/developerworks/db2/library/techarticle/dm-0603saracco/?S_TACT=105AGY75)" (developerWorks, 03.2006).
- Tìm hiểu cách làm thế nào để "
[Truy vấn dữ liệu XML trong DB2 với XQuery](http://www.ibm.com/developerworks/db2/library/techarticle/dm-0604saracco/?S_TACT=105AGY75)" (developerWorks, 04.2006).
- Tìm hiểu cách làm thế nào để "
[Truy vấn dữ liệu XML trong DB2 với SQL](http://www.ibm.com/developerworks/db2/library/techarticle/dm-0603saracco2/?S_TACT=105AGY75)" (developerWorks, 03.2006).
- Đọc
[Đọc Tập san các hệ thống của IBM](http://www.research.ibm.com/journal/sj45-2.html)và kỷ niệm 10 năm của XML.
- Xem
[Tài liệu Tham khảo SQL, tập 1](ftp://ftp.software.ibm.com/ps/products/db2/info/vr82/pdf/en_US/db2s1e81.pdf)để xem các thông tin bổ sung.
- Xem
[Tài liệu Tham khảo SQL, tập 2](ftp://ftp.software.ibm.com/ps/products/db2/info/vr82/pdf/en_US/db2s2e81.pdf)để xem các thông tin bổ sung.
- Xem
[Trung tâm thông tin DB2](http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp)để khắc phục sự cố.
- Xem
[Không gian hỗ trợ kỹ thuật XML DB2](http://www.ibm.com/developerworks/wikis/display/db2xml/Home?S_TACT=105AGY75)để nhận được các liên kết tới hơn 25 bài báo về các khả năng của XML DB2.
### Lấy sản phẩm và công nghệ
- Hiện nay bạn có
thể sử dụng DB2 miễn phí. Tải xuống
[DB2 Express-C](http://www.ibm.com/developerworks/downloads/im/udbexp/index.html?S_TACT=105AGY75), một phiên bản DB2 Express miễn phí dành cho cộng đồng nhưng vẫn có đủ các đặc tính dữ liệu cốt lõi giống như phiên bản DB2 Express và cung cấp một cơ sở vững chắc để xây dựng và triển khai các ứng dụng.
### Thảo luận
## Bình luận
[Vùng dữ liệu trên developerWorks](http://www.ibm.com/developerworks/vn/views/data/libraryview.jsp)
Khám phá các bài viết xoay quanh lĩnh vực dữ liệu, Quản lý hệ thống thông tin
[Vùng mã nguồn mở trên developerWorks](http://www.ibm.com/developerworks/vn/views/opensource/libraryview.jsp)
Xem các bài viết về HTML, CSS, JavaScript,...
[Điện toán đám mây](http://www.ibm.com/developerworks/vn/views/cloud/libraryview.jsp)
Tìm hiểu về điện toán đám mây

Content-Language: en-US