Loading...

Trong các ví dụ trên ta chỉ lấy dữ liệu từ một table, nhưng trong thực tế yêu cầu kết xuất dữ liệu đòi hỏi chúng ta phải lấy (tổng hợp) dữ liệu từ nhiều table khác nhau, các table này có thể, hoặc không, được thiết lập quan hệ dữ liệu trước đó. Trong trường hợp này ta vẫn sử dụng câu lệnh Select như thông thường, nhưng lưu ý đến sự kết nối (join) dữ liệu giữa hai table.  

Các ví dụ sau được thực hiện dựa trên cơ sở dữ liệu HSCB, gồm 2 table:

Lylich(MaCB, HoTen, MaPB, NgaySinh, HSLuong, NgayHĐ)

ThuNhap(MaCB, NgayThang, NguonThuNhap, SoTien, Thue)

Hai table này:

- Hoặc có ràng buộc (quan hệ) 1 – n với nhau thông qua trường khóa MaCB. Tức là, một cán bộ có mã xác định nào đó ở table lylich (MaCB là khóa chính) thì có thể xuất hiện ở nhiều record khác nhau ở table ThuNhap (MaCB là khóa ngoại).

- Hặc không có ràng buộc (quan hệ) với nhau, nhưng dữ liệu tại các cột MaCB của hai bảng có thể khớp với nhau.

Kết xuất dữ liệu (join 2 table) 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;

mysql> SELECT * FROM thunhap;

mysql>

Hai lệnh Select trên chỉ in ra các record của từng table. Câu lệnh Select sau sẽ join hai table lylich và thunhap với nhau, nhờ đó mà ta có thể in ra tất cả cán bộ trong table lylich mà có xuất hiện trong table thunhap. Và có thể in ra tổng thu nhập của tất cả cán bộ ở table lylich.

mysql> SELECT a.MaCB, a.TenCB, b.SoTien

-> FROM lylich a, thunhap b WHERE a.MaCB = b.MaCB;

mysql>

Trong câu lệnh này, chúng ta cần chú ý các alias a (lylich a), b (thunhap b): Phải đặt alias cho 2 table cần join thì mới sử dụng nó trong biểu thức logic sau Where được.

Kết xuất dữ liệu (join 2 table) tong script PHP

Thực hiện tương tự như trong các dạng lệnh khác của câu lệnh Select. Chỉ khác ở chỗ phải đặt alias (a, b,…) cho các table mà lệnh tác động đến. Chúng ta cần chú ý đến biểu thức logic sau Where: Trên trường phải đi kèm alias để xác định nó thuộc table nào (cả 2 điều có trường MaCB).

Ví dụ:

<?php

$dbhost = 'localhost:3036';

$dbuser = 'root';

$dbpass = 'a123456789z';

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

If (!$conn)

{

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

}

$sql = 'SELECT a.MaCB, a.HoTen, b.SoTien

FROM lylich a, thunhap b WHERE a.MaCB = b.MaCB';

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

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['MaCB']}  <br> ".

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

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

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

}

echo "Fetched data successfully\n";

mysql_close($conn);

?>

Câu lệnh sql này không thể in ra các record, trong table thunhap, mà giá trị trường MaCB của nó không xuất hiện ở trường MaCB trong bảng lylich.

MySQL Left Joins

Left join là một hình thức khác của single join, nó cho phép xem xét mở rộng đối với table bên trái.

Nếu chỉ định left join được đưa ra thì tất cả record trong table thunhap được chọn ra cho dù MaCB của nó không tìm thấy ở trường MaCB ở table lylich.

Ví dụ:

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

Enter password:*******

mysql> use HSCB;

Database changed

mysql> SELECT a.MaCB, a.HoTen, b.SoTien

-> FROM lylich a LEFT JOIN thunhap b

-> ON a.MaCB = b.MaCB;

Trong thực tế có rất nhiều truy vấn dữ liệu cần đến sự trợ giúp của left join, vì thế chúng ta sẽ trở lại vấn đề này ở các bài sau.

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