Ứng Dụng của Join Bất Cân Bằng

Tiếp theo bài viết Cẩn thận với Join bất cân bằng, bài viết này mô tả một trường hợp thường gặp có thể xử lý bằng Join bất cân bằng (còn được gọi bằng Non Equi-Joins).
Đó là những bài toán liên quan đến cách tính bậc thang.
Ví dụ giá điện dùng trong khoảng 0-100 thì áp mức giá 100 cho 1 số, từ 101 – 200 lại áp mức giá 200. Cần tính tiền cho từng khách hàng với số điện dùng trong tháng.
Hoặc trong viễn thông, áp giá cho cuộc gọi từ 0-10 giây đầu là 1 đồng, từ giây thứ 11 là 2 đồng… Trong bưu chính, khối lượng hàng hóa từ 0-200g thì mức giá là 1000 đồng, từ 200-400g là 2000 đồng…
Để giải quyết bài toán này có nhiều cách, một trong số những cách thức hiệu quả là sử dụng Join bất cân bằng vì những ưu điểm sau:
- Xử lý hàng loạt, không sử dụng Cursor
- Có thể cài đặt bằng SQL, thuận tiện khi triển khai trên những hệ thống khác ngoài SQL Server như Oracle, MySQL…

MÔ TẢ BẢNG … đọc tiếp »

Posted on 29/9/2014 by Guess Post: Vũ Minh Tâm | Categories: SQL Server Programming

Cẩn Thận Với Join Bất Cân Bằng

Thông thường khi viết lệnh JOIN, trong biểu thức ở mệnh đề join bạn dùng toán tử “=”. Kiểu join này tạm gọi là join cân bằng, còn kiểu join tạm gọi là bất cân bằng là khi biểu thức ở mệnh đề join dùng các toán tử bất cân bằng như >, < , !=... … đọc tiếp »

Posted on 10/9/2014 by Vũ Huy Tâm | Categories: SQL Server Programming

Kinh Nghiệm Phỏng Vấn

Đây là một trong loạt bài về kinh nghiệm xin việc, bài trước nói về kinh nghiệm viết resume. Giống như bài trước, bài này cũng chỉ dựa vào những kinh nghiệm cá nhân của tôi trong thời gian làm việc tại Mỹ. Nếu bạn thấy có gì không phù hợp với hoàn cảnh ở Việt nam hoặc muốn bổ sung điều gì, xin hãy comment ở bên dưới.

Một resume bắt mắt giống như một miếng mồi ngon, thể nào cũng sẽ có vài công ty gọi đến và muốn phỏng vấn bạn (cá bắt đầu lượn lờ). Thông thường công ty sẽ phỏng vấn nhanh qua điện thoại trước để kiểm tra đúng người thực và có các kỹ năng như viết trong resume. Sau đó nếu mọi chuyện suôn sẻ họ sẽ mời bạn đến phỏng vấn (cá bắt đầu ngửi hít).

Khi đi phỏng vấn, bạn cũng cần giữ nguyên tinh thần như lúc viết resume: tôi toàn làm những việc quan trọng và giờ tôi đi tìm một công việc quan trọng hơn.

Buổi phỏng vấn thường bắt đầu bằng … đọc tiếp »

Posted on 21/8/2014 by Vũ Huy Tâm | Categories: Linh tinh

Viết Resume Xin Việc Như Thế Nào

Mình đã trải qua vài lần đi phỏng vấn xin việc và ngồi phỏng vấn các bạn đến xin việc. Mình cũng đã phải kỳ cạch ngồi viết resume cho mình và đọc hàng trăm resume của các bạn ứng viên. Mình phát hiện ra một vài lỗi trong resume rất nhiều bạn mắc phải, những lỗi này nếu để ý sửa được sẽ làm cho resume trông chuyên nghiệp và tạo ấn tượng tốt cho người đọc. Mặc dù các kinh nghiệm này là ở Mỹ, mình tin là nó có giá trị phổ cập. Đây là một trong loạt bài về kinh nghiệm xin việc, bài kia nói về kinh nghiệm phỏng vấn.

 

Giải phẫu một cái resume

Resume (hoặc còn gọi là CV) có một nguyên tắc chung là toàn bộ nội dung phải là các gạch đầu dòng và mỗi gạch đầu dòng chỉ là một đoạn ngắn không quá 3 dòng. Nếu bạn viết liền một đoạn 5-7 câu thì người đọc sẽ phát chán. Một nguyên tắc nữa là trang đầu tiên phải chứa hết các thông tin bạn muốn người ta đọc, vì thế bạn phải đưa các thông tin quan trọng nhất vào trang đầu tiên, các trang sau chỉ là để thêm thắt cho đầy đủ.

Resume không có khuôn mẫu cố định nhưng thường bắt đầu bằng thông tin cá nhân (tên, địa chỉ liên lạc) và tiếp theo gồm các phần như sau: … đọc tiếp »

Posted on 20/8/2014 by Vũ Huy Tâm | Categories: Linh tinh

Cấu Hình SQL Server Để Gửi Mail

Bài này nói về cách gửi email trong SQL Server bằng chức năng Database Mail. Chức năng cũ SQL Mail không còn được hỗ trợ nữa.
Việc đầu tiên là bạn cần bật chức năng Database Mail, bằng đoạn code sau:

SP_CONFIGURE 'show advanced options', 1;
GO
RECONFIGURE;
GO
SP_CONFIGURE 'Database Mail XPs', 1;
GO
RECONFIGURE
GO

Sau đó trong Management Studio, … đọc tiếp »

Posted on 18/8/2014 by Vũ Huy Tâm | Categories: Database Administration

Thiết Lập Cho xp_cmdshell

SQL Server là hệ quản trị dữ liệu, khả năng chính của nó là lưu trữ và truy xuất dữ liệu. Tuy nhiên đôi lúc bạn cần thực hiện một số thao tác của windows từ SQL Server, ví dụ khi bạn cần viết sql script để copy file từ folder này sang folder khác; hoặc tự động restore từ file backup mới nhất dựa theo ngày tạo (tên file không biết trước). SQL Server cung cấp thủ tục xp_cmdshell trong master database để làm việc này.
Để có thể gọi đến xp_cmdshell đòi hỏi một vài bước thiết lập.
Nếu bạn là DBA với quyền sysadmin, bạn cần cấu hình lại server để bật xp_cmdshell (khi SQL Server mới cài đặt tính năng này bị tắt): … đọc tiếp »

Posted on 14/3/2014 by Vũ Huy Tâm | Categories: Bảo mật, Database Administration, Uncategorized

[LINH TINH] Từ Vựng Lớp 3

Con trai mình học lớp 3, thấy có bảng từ có mấy từ khá khó. Không nói về ngôn ngữ tiếng Anh hay tiếng Việt, nhưng những khái niệm khá trừu tượng như estimate (ước lượng), tone (giọng điệu của một bài viết), hay generalization (khái quát hóa). Hồi lớp 3 của mình thì chắc chưa được học mấy cái này (dù bằng tiếng Việt). Không biết trẻ con ở VN giờ học thế nào?
Hỏi thêm: có từ nào bạn chưa biết? (Xem ảnh dưới) … đọc tiếp »

Posted on 28/2/2014 by Vũ Huy Tâm | Categories: Linh tinh

LEFT JOIN Với Mệnh Đề WHERE

Trong bài Một Vài Kiểu Viết Join tôi có đưa ra một số cách viết câu lệnh join tương đương nhau, trong đó điều kiện JOIN có thể chuyển qua lại với mệnh đề WHERE. Tuy điều này đúng với INNER JOIN, khi bạn dùng LEFT JOIN sẽ dẫn đến kết quả sai ngoài mong đợi. Hãy xem xét qua ví dụ: bạn có một database về bán hàng điện thoại, gồm có hai bảng là MatHang bao gồm các loại điện thoại, và BanHang chứa các giao dịch bán hàng. Dữ liệu như sau: … đọc tiếp »

Posted on 26/2/2014 by Vũ Huy Tâm | Categories: SQL Server Programming

Di chuyển Database File

Khi bạn cần chuyển database file (data file hoặc log file) sang ổ cứng khác để giải phóng không gian đĩa hiện tại, một cách hiển nhiên bạn có thể làm là backup database đó hoặc lấy file backup gần đây nhất, và restore lại trên cùng server với lựa chọn đặt file sang ổ đĩa mới. Bài viết Di Chuyển File Khi Khôi Phục Dữ liệu mô tả chi tiết cách làm này. Tuy nhiên trong suốt quá trình restore, database sẽ không truy cập được. Nếu database lớn, thời gian restore sẽ kéo dài gây gián đoạn sử dụng cho người dùng. Một cách làm đơn giản hơn là đặt database thành offline và copy file sang thư mục mới, như ví dụ dưới đây:

ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE --đóng hết các connection tới database
 
ALTER DATABASE MyDB SET OFFLINE --đặt database thành offline
 
ALTER DATABASE MyDB MODIFY FILE 
(
   Name = MyDB,
   Filename = 'N:\DATA\MyDB.MDF' --Giả dụ N: là ổ đĩa mới
)

Điểm quan trọng nhất trong đoạn lệnh trên là lệnh ALTER DATABASE thứ ba, lệnh này cập nhật system catalog để báo cho hệ thống biết file giờ nằm ở đâu. Bước tiếp theo bạn cần copy file MyDB.MDF từ thư mục hiện tại sang thư mục mới N:\DATA\, bước này nằm ngoài SQL Server và bạn cần dùng windows để copy. Sau khi copy xong, bạn quay lại Management Studio và chạy hai lệnh:

ALTER DATABASE MyDB SET ONLINE --đặt database trở lại online
 
ALTER DATABASE MyDB SET MULTI_USER --đặt trở lại chế độ nhiều người dùng

Đến đây bạn có thể xóa file MyDB.MDF ở folder cũ và quá trình như vậy là hoàn tất.

Posted on 24/2/2014 by Vũ Huy Tâm | Categories: Database Administration