Archive for May, 2009

Displaying rows as columns

May 27, 2009

Nhân hôm nay đại ca của mình hỏi về cách chuyển đổi từ ROWs sang Columns trong trường hợp số ROWS tĩnh, chắc cái này các bạn cũng thỉnh thoảng gặp trong Projects nên mình bốt ra đây để cùng “lồng bàn” nhé.

Để cho các bạn dễ hình dung mình show ví dụ nhé:
– Một bảng tbl_Nhanvien
– Một bảng tbl_Giaykhen (bảng này là bảng danh mục chỉ có 6 loại giấy khen)
– 2 bảng trên quan hệ theo kiểu nhiều nhiều nên theo lý thuyết chuẩn hoá của các GS râu rậm, tất yếu phải có một bảng tbl_Nhanvien_Giaykhen quan hệ với 2 bảng kia theo kiểu 1 – many

Nhân viên A có 6 cái giấy khen, nên bảng tbl_Nhanvien_Giaykhen sẽ có 6 bản ghi:
Ma Ten Giaykhen
1    A    GK1
1    A    GK2
1    A    GK3
1    A    GK4
1    A    GK5
1    A    GK6

Bây giờ mình cần hiển thị như thế này
1     A    GK1    GK2    GK3    GK4    GK5    GK6

What will you suggest?

Có nhiều cách để đến Roma, (nói đến đây lại nhớ tối nay Rùa – (MU rùa) đá với Rắn (Bạch Xà) ở Roma :)), mình cứ show ra đây để cho bạn không bảo là mình phét:
C1: Viết 1 Store Procedure, tính tính toán toán làm sao để ra khuôn dạng như trên là được
C2: Dùng hàm build-in như When case trong SQL server, Decode trong Oracle

Mình prefered cách 2. And you?

P/S: Hôm nay Rắn thằng Rùa 2 nháy rồi nên mình vào cập nhật thêm:  Trong trường hợp số Rows động thì làm thế nào? Mình nghĩ nếu chỉ là câu lệnh thuần tuý thì cũng khó mà làm, chắc lại phải dùng Store Procedure sử dụng crosstable để gen câu SQL thôi. Nếu để tạo các report thì dùng trực tiếp Matrix report của Oracle và Cross-Tab Report trong Crystal Report

HN

Advertisements

Index, when?

May 20, 2009

Ở cuộc thi “Ai là triệu phú”, anh Sâm LV hỏi “chung chung” thế này:

“Sử dụng index sẽ làm cho câu SQL của bạn … ”

A. Nhanh lên
B. Chậm lên
C. Chẳng nhanh cũng chẳng chậm
D. x biết

– Em xin lựa chọn hỏi ý kiến khán giả. Anh Sâm quay sang hỏi khán giả. Đáp án của khán giả là A – 60%, B – 30%,  C – 5% và D – 5%. Thế còn bạn, câu trả lời của bạn là gì?

Mình đoán phần lớn các bạn sẽ trả lời là A theo ý kiến khán giả (giả vờ thế). Nếu thế thì các bạn tạch rồi. Mất n triệu rồi. Đau nhỉ.

Đáp án là D: x biết.

Index chỉ useful when
– Cột chứa một khoảng rộng dữ liệu
– Cột chứa một số lượng lớn giá trị null
– Cột thường xuyên được sử dụng cùng nhau trong mệnh đề WHERE hoặc điều kiện join
– Bảng chứa rất nhiều dữ liệu và hầu hết các câu queries với điều kiện Where sẽ lấy dữ liệu trả về nhỏ từ 2% – 4%

Index is not useful when:
– Bảng nhỏ, chứa ít dữ liệu
– Cột ít được sử dụng trong điều kiện WHERE
– Hầu hết các câu queries sẽ lấy dữ liệu trả về lớn hơn 4%
– Bảng thường xuyên được cập nhật
– Cột được index được sử dụng như một tham chiếu trong biểu thức
(Note: con số % thì có thể tuỳ theo database)

Như vậy câu trả lời “x biết” là đúng. Bạn chỉ trả lời nhanh hay chậm khi bạn nhìn vào một câu lệnh cụ thể. Is it right, guys?

HN

Microsoft SOA Solution

May 20, 2009

Yesterday, I went to Microsoft Windows Azure home page, I found it is very interesting and fantastic. Microsoft bring you a platform for cloud computing. I decided to continue studying Windows Azure more. I think Windows Azure provides a platform for cloud computing and our services are available in Internet. Everyone can purchase those services and reduce a lot of cost (like we purchase electricity, water…, these services come popular, so their cost is getting cheaper). But I was considering much about the Internet scope of this platform. If I want to use Windows Azure to deploy a SOA solution in our intranet, how can I do it? By chance, I opened my google reader and read a new article in MSDN Magazine Service Virtualization With The Managed Services Engine. Microsoft has been also providing another SOA Infrastructure offerings and a technical solution referred to as the Managed Services Engine (MSE). I think now we can use MSE for deploying a SOA solution in Intranet and use Windows Azure for deploying a in-the-cloud solution in Internet. I don’t know whether it is correct, but I will continue studying it.