Loading...

1. Sắp xếp dữ liệu kết quả

Trong bài này chúng ta xem cách sử dụng của một từ khóa (mệnh đề) nữa của câu lệnh Select, đó là: ORDER BY. Với từ khóa này, dữ liệu kết quả của câu lệnh Select sẽ được sắp xếp theo chiều tăng dẫn hoặc giảm dần của một, hoặc nhiều, trường (field) được chỉ định.

Cú pháp lệnh:

SELECT field1, field2,...fieldN table_name1, table_name2...

ORDER BY field1, [field2...] [ASC [DESC]]     

Tác dụng: Các record trong kết quả trả về của lệnh Select sẽ được sắp xếp theo chiều tăng dần ([ASC]: Default) hoặc giảm dần ([DESC]) của dữ liệu ở field1, hoặc field1 rồi đến field2,… (sắp xếp dựa vào dữ liệu từ nhiều field). 

Sử dụng từ khóa ORDER BY tại dấu nhắc mysql>:

Ví dụ:

root@ubuntu# mysql -u root -p password;

Enter password:*******

mysql> use HSCB;

Database changed

mysql> SELECT * from lylich ORDER BY TenCB ASC

….

mysql>

Lệnh Select này được sử dụng để, in ra tất cả các record trong table lylich, của cơ sở dữ liệu HSCB, theo thứ tự tăng dần của trường TenCB (tên cán bộ).

Sử dụng từ khóa ORDER BY trong script PHP:

Việc sử dụng từ khóa ORDER BY trong các hàm PHP mysql_query() và mysql_fetch_array() là hoàn toàn tương tự như các trường hợp khác. Mọi thứ đều chỉ khác ở câu lệnh Select.

Ví dụ:

Đoạn code PHP sau đây tác động vào table tutorial_tbl của cơ sở dữ liệu TUTORIALS.

<?php

$dbhost = 'localhost:3036';

$dbuser = 'root';

$dbpass = 'a123456789z';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

If (!$conn)

{

die('Could not connect: ' . mysql_error());

}

$sql = 'SELECT tutorial_id, tutorial_title,

tutorial_author, submission_date

FROM tutorials_tbl ORDER BY  tutorial_author DESC';

//------------------------------------------

mysql_select_db('TUTORIALS');

$retval = mysql_query( $sql, $conn );

If (!$retval)

{

die('Could not get data: ' . mysql_error());

}

//-----------------------------------------------

while($row = mysql_fetch_array($retval, MYSQL_ASSOC))

{

echo "Tutorial ID :{$row['tutorial_id']}  <br> ".

"Title: {$row['tutorial_title']} <br> ".

"Author: {$row['tutorial_author']} <br> ".

"Submission Date : {$row['submission_date']} <br> ".

"--------------------------------<br>";

}

echo "Fetched data successfully\n";

mysql_close($conn);

?>

Đoạn code này được sử dụng để in ra các record trong table tutorial_tbl theo thứ tự giảm dần (DESC) của trường tutorial_author (ORDER BY  tutorial_author DESC).

2. Điều khiển các giá trị NULL

Đặt vấn đề:

Việc sử dụng lệnh câu lệnh SQL Select với mệnh đề Where … Like để chọn ra các record, mà giá trị tại một, hoặc nhiều, field của nó thỏa điều kiện nào đó đã trở nên đơn giản. Nhưng khi biểu thức điều kiện sau Where liên quan đến một giá trị NULL, như so sánh giá trị tại một field với giá trị NULL, thì vấn đề không còn đơn giản nữa.

MySQL cung cấp 3 toán tử để làm việc với các giá trị NULL:

- IS NULL: Trả về True nếu giá trị field là NULL.

- IS NOT NULL: Trả về True nếu giá trị field là không NULL.

- <=>: Đây là toán tử so sánh giá trị, nó trả về giá trị True khi hai phần tử so sánh đều là giá trị NULL.

Các điều kiện liên quan đến giá trị NULL là đặc biệt. Ta không thể sử dụng = NULL hoặc = !NULL để tìm ra các giá trị NULL trong các field. Trong trường hợp này ta buộc phải sử dụng các toán tử ở trên.

Sử dụng các giá trị NULL tại dấu nhắc mysql>:

Ví dụ 1:

mysql> SELECT * FROM tcount_tbl

-> WHERE tutorial_count = NULL;

Empty set (0.00 sec)

mysql> SELECT * FROM tcount_tbl

-> WHERE tutorial_count != NULL;

Empty set (0.01 sec)

mysql>

Hai câu lệnh trên đều không thể tìm ra các record mà trường tutorial_count nhận giá trị NULL hoặc không NULL, cho dù trong thực tế là có tồn tại các record này.

Ví dụ 2:

Hai câu lệnh sau giúp sửa sai cho hai câu lệnh trên.

mysql> SELECT * FROM tcount_tbl

-> WHERE tutorial_count IS NULL;

….

mysql> SELECT * from tcount_tbl

-> WHERE tutorial_count IS NOT NULL;

….

            mysql>

Tức là, khi cần so sánh với giá trị NULL, ta thay dấu “=” bởi toán tử IS và thay dấu “!=” bởi toán tử IS NOT.

Sử dụng các giá trị NULL trong script PHP:

Ta có thể sử dụng câu lệnh điều kiện if … else để chuẩn bị các câu truy vấn dựa trên các giá trị NULL.

Ví dụ:

Ở đây vẫn sử dụng câu lệnh SQL Select để tìm record thỏa mãn điều kiện, nhưng giá trị cần so sánh của biểu thức điều kiện được truyền vào câu lệnh thông qua biến tutorial_count, mà biến này có thể nhận giá trị nào đó, hoặc nhận giá trị rỗng nên nó phải sử dụng hai câu Select cho hai trường hợp này.

Hàm isset() được sử dụng trong câu lệnh if … else để cung cấp cho hàm mysql_query() một trong hai câu lệnh sql, phụ thuộc vào biến tutorial_count là chứa giá trị bất kỳ (WHERE tutorial_count= $tutorial_count) hay không chứa bất kỳ giá trị nào (WHERE tutorial_countIS $tutorial_count).  

--------------------

<?php

$dbhost = 'localhost:3036';

$dbuser = 'root';

$dbpass = 'a123456789z';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

If (!$conn)

{

die ('Could not connect: ' . mysql_error());

}

//----------------------------

If (isset($tutorial_count))

{

$sql = 'SELECT tutorial_author, tutorial_count

FROM  tcount_tbl WHERE tutorial_count= $tutorial_count';

}

else

{

$sql = 'SELECT tutorial_author, tutorial_count

FROM  tcount_tbl WHERE tutorial_countIS $tutorial_count';

}

//-----------------------------------------

mysql_select_db('TUTORIALS');

$retval = mysql_query( $sql, $conn );

If (!$retval)

{

die('Could not get data: ' . mysql_error());

}

While ($row = mysql_fetch_array($retval, MYSQL_ASSOC))

{

echo "Author:{$row['tutorial_author']}  <br> ".

"Count: {$row['tutorial_count']} <br> ".

"--------------------------------<br>";

}

echo "Fetched data successfully\n";

mysql_close($conn);

?>

Hàm isset() để kiểm tra một biến là có giá trị hay chưa, nếu có thì trả về giá trị True, ngược lại trả về giá trị False.

Tự học

Ý kiến của bạn

Mã bảo vệ
Làm mới

Hãy đăng quảng cáo trên TuHocAnNinhMang.com

Bài xem nhiều nhất

Tự học lập trình C - Bài 1: Một số khái niệm cơ bản

Khái niệm tên rất quan trọng trong quá trình lập trình, ...

MySQL – Bài 8: Khóa chính (primary key) và khóa ngoại (foreign key) của table

Với ràng buộc này thì, việc người sử dụng vô tình hay cố ...

Tự học lập trình C - Bài 10: Mảng một chiều

Mảng 1 chiều là tập hợp các phần tử có cùng kiểu dữ ...

Tự học lập trình JAVA – Bài 1: Bước đầu với Java

Một chương trình java có thể được định nghĩa như là một ...

Tự học lập trình C - Bài 2: Cấu trúc chương trình C

Một chương trình bao gồm một hoặc nhiều hàm, mỗi hàm ...

Tự học lập trình Assembly - Bài 1: Bước đầu với lập trình Assembly trên vi xử lý Intel 8086/8088

Như đã biết, lệnh ngôn ngữ máy là một dãy các con số 0, ...

Hướng dẫn in ấn trong Word 2007/2010 – Step by Step

[Tự học] - Tiêu đề đầu trang (Header)/tiêu đề cuối ...

Hãy đăng quảng cáo trên TuHocAnNinhMang.com

Về đầu trang Hỏi - Đáp