Home > MySQL > Mệnh đề if else trong truy vấn mysql

Mệnh đề if else trong truy vấn mysql

mysql if else statement

Ví dụ
Chúng ta có một table lưu thông tin banner quảng cáo như  sau:

banner(banner_id, banner_file, banner_expire)
CREATE TABLE `banners` (

`banner_id` INT(12) NOT NULL,

`banner_file` VARCHAR(80) NOT NULL,

`banner_expire` DATE NULL DEFAULT NULL,

PRIMARY KEY (`banner_id`)

)

Cơ Sở Dữ Liệu lưu trữ như sau

banner_id banner_file banner_expire
1 aaa.gif (NULL)
2 bbb.gif 2012-10-19

chú ý field banner_expire = NULL nghĩa là banner này sẽ hiển thị mãi mãi không giới hạn ngày kết thúc

Vấn đề đặt ra ở đây làm thế nào để truy vấn MySQL lấy được thông tin cả 2 record mà vẫn đảm bảo tính ràng buộc ngày kết thúc (banner_expire) nếu nó có giá trị:
– Nếu banner_expire != NULL (giá trị giới hạn ngày hiển thị còn hiệu lực) , thì giá trị ngày giới hạn phải nhỏ hơn học bằng ngày hiện tại ( DATEDIFF(‘banner_expire’, CURRENT_DATE())  >= O )

Giả sử ngày hôm nay là 19-10-2012

Nếu truy vấn :


SELECT * FROM banner

WHERE DATEDIFF(banner_exprire, CURRENT_DATE()) >= 0 LIMIT 0,5

//Out put Chúng ta sẽ chỉ lấy được một mẩu tin có banner_id =1,

như vậy không hoàn toàn đúng với yêu cầu bài toán.

Chúng ta phát biểu lại câu truy vấn  như  sau:

SELECT b.* FROM banners AS b

JOIN (SELECT banner_id,

IF(banner_expire IS NULL, CURRENT_DATE(), CONCAT(”,banner_expire) )

AS expire FROM banners) AS bn

ON b.banner_id=bn.banner_id

AND DATEDIFF(bn.expire, CURRENT_DATE()) >= 0 LIMIT 0,5

//Out put 2 Mẩu tin trên

 

nhantam
PHP Developer

Advertisements
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: