<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>JOIN trong SQL Server</title>
<meta name="description" content="JOIN trong SQL Server - Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;join-trong-sql-server-8840.html">
<meta name="author" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.">
<meta name="copyright" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :. [admin@nguoicodonvn2008.info]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="JOIN trong SQL Server">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;join-trong-sql-server-8840.html">
<meta property="og:site_name" content=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.">
<meta property="og:url" content="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/join-trong-sql-server-8840.html">
<link rel="shortcut icon" href="https://nguoicodonvn2008.info/favicon.ico">
<link rel="canonical" href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/join-trong-sql-server-8840.html">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/karaoke-dual/" title="Tin Tức - Karaoke Dual" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nhac-tre/" title="Tin Tức - Nhạc trẻ" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tru-tinh/" title="Tin Tức - Trữ tình" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nuoc-ngoai/" title="Tin Tức - Nước ngoài" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/remix/" title="Tin Tức - Remix" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tam-su-tinh-yeu/" title="Tin Tức - Tâm sự tình yêu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tho-suu-tam/" title="Tin Tức - Thơ sưu tầm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/cuoc-song/" title="Tin Tức - Cuộc sống" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/phan-mem/" title="Tin Tức - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/kien-thuc-may-tinh/" title="Tin Tức - Kiến thức máy tính" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/hoc-tap/" title="Tin Tức - Học tập" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tai-lieu/" title="Tin Tức - Tài liệu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/de-thi/" title="Tin Tức - Đề thi" type="application/rss+xml">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://nguoicodonvn2008.info/themes/default/css/news.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">.&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.</h2>
		<p class="pull-right"><a title=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;." href="https://nguoicodonvn2008.info/">https://nguoicodonvn2008.info</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>JOIN trong SQL Server</h1>
		<ul class="list-inline">
			<li>Thứ bảy - 10/08/2024 00:24</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
		</div>
				<div class="imghome">
			<img alt="JOIN trong SQL Server" src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-inner-join.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<h1 style="text-align: justify;"><strong style="font-size: 13px;">Join trong SQL Server</strong><span style="font-size: 13px;">&nbsp;là gì?</span><strong style="font-size: 13px;">&nbsp;Câu lệnh Join trong SQL Server&nbsp;</strong><span style="font-size: 13px;">như thế nào? Nếu chưa biết, hãy cùng Quantrimang.com tìm hiểu về&nbsp;</span><strong style="font-size: 13px;">các loại Join trong SQL Server</strong><span style="font-size: 13px;">&nbsp;nhé!</span></h1>

<p style="text-align: justify;">Trong cuộc sống, chúng ta lưu trữ dữ liệu ở nhiều bảng logic được liên kết với nhau bằng một giá trị khóa chung trong database quan hệ như SQL Server, Oracle, MySQL… Kết quả, chúng ta liên tục cần lấy dữ liệu từ 2 hoặc nhiều bảng hơn và tập hợp chúng thành kết quả mong muốn dựa trên một số điều kiện. Bạn có thể nhanh chóng đạt được kiểu dữ liệu này trong SQL Server bằng lệnh JOIN trong SQL Server. Bài viết dưới đây sẽ cung cấp cho bạn thông tin đầy đủ về Join on trong SQL Server kèm ví dụ minh họa dễ hiểu.</p>

<p style="text-align: justify;">Mệnh đề hay lệnh Join cho phép lập trình viên truy xuất dữ liệu từ hai hoặc nhiều bảng liên quan thành một nhóm kết quả ý nghĩa. Bạn có thể nối bảng bằng lệnh SELECT và một điều kiện JOIN. Nó chỉ ra cách SQL Server có thể dùng dữ liệu từ một bảng để chọn các hàng từ bảng khác. Nhìn chung, các bảng có liên quan với nhau qua các ràng buộc foreign key.</p>

<p style="text-align: justify;">Dưới đây là 4 loại JOIN trong SQL Server</p>

<ul>
	<li style="text-align: justify;"><strong>INNER JOIN</strong>&nbsp;- hay còn gọi là hình thức kết nối đơn giản</li>
	<li style="text-align: justify;"><strong>LEFT OUTER JOIN</strong>&nbsp;- hay LEFT JOIN</li>
	<li style="text-align: justify;"><strong>RIGHT OUTER JOIN</strong>&nbsp;- hay RIGHT JOIN</li>
	<li style="text-align: justify;"><strong>FULL OUTER JOIN</strong>&nbsp;- hay FULL JOIN</li>
</ul>

<p style="text-align: justify;">Giờ hãy cùng nhìn vào cú pháp, hình minh họa cũng như các ví dụ để hiểu hơn về JOIN trong SQL Server.</p>

<h3 id="mcetoc_1c8h2cpu11" style="text-align: justify;">INNER JOIN</h3>

<p style="text-align: justify;">Nhiều khả năng bạn đã dùng INNER JOIN trong lệnh nào đó rồi. Đây là loại kết nối phổ biến nhất, trả về tất cả các hàng từ các bảng khi điều kiện kết nối được đáp ứng.</p>

<p style="text-align: justify;"><strong>Cú pháp INNER JOIN</strong></p>

<div style="text-align: justify;"><iframe allow="autoplay" allowtransparency="true" aria-label="Advertisement" data-google-container-id="a!2" data-google-query-id="COakhJPK6YcDFS5EwgUd-1kE0Q" data-load-complete="true" frameborder="0" height="0" hspace="0" id="aswift_1" marginheight="0" marginwidth="0" name="aswift_1" sandbox="allow-scripts allow-same-origin allow-forms allow-presentation allow-popups" scrolling="no" tabindex="0" title="Advertisement" vspace="0" width="694"></iframe></div>

<pre id="pre0" style="text-align: justify;">
SELECT cot
  FROM bang1
  INNER JOIN bang2
  ON bang1.cot = bang2.cot;</pre>

<p style="text-align: justify;"><img alt="Hình ảnh minh họa INNER JOIN" data-i="0" data-src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-inner-join.jpg" data-was-processed="true" height="222" src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-inner-join.jpg" width="370" /><br />
<em>Hình ảnh minh họa INNER JOIN</em></p>

<p style="text-align: justify;">Kết quả trả về là những bản ghi chung giữa bang1 và bang2.</p>

<p style="text-align: justify;"><strong>Ví dụ INNER JOIN</strong></p>

<pre id="pre1" style="text-align: justify;">
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Kết quả trả về trong ví dụ trên là hàng thông tin trong bảng “nhà cung” và bảng “đơn hàng” khi giá trị nhacung_id ở 2 bảng bằng nhau.</p>

<p style="text-align: justify;">Hãy cùng xem ví dụ với số liệu cụ thể để hiểu rõ hơn.</p>

<p style="text-align: justify;">Bảng nhacung có 2 trường thông tin là nhacung_id và nhacung_ten.</p>

<table border="1" width="100%">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_ten</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">IBM</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">Hewlett Packard</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10002</td>
			<td style="text-align: justify;">Microsoft</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10003</td>
			<td style="text-align: justify;">NVIDIA</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Bảng donhang gồm 3 trường donhang_id, nhacung_id và donhang_ngay.</p>

<table border="1" width="100%">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>donhang_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">500125</td>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">2003/05/12</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500126</td>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">2003/05/13</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500127</td>
			<td style="text-align: justify;">10004</td>
			<td style="text-align: justify;">2003/05/14</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Nếu chạy lệnh&nbsp;<a href="https://quantrimang.com/hoc/lenh-select-trong-sql-server-147319" title="Lệnh SELECT trong SQL Server ">SELECT</a>&nbsp;(có dùng INNER JOIN) dưới đây:</p>

<pre id="pre2" style="text-align: justify;">
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Thì đây là bộ kết quả trả về:</p>

<table border="1" width="100%">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>ten</strong></td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">IBM</td>
			<td style="text-align: justify;">2003/05/12</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">Hewlett Packard</td>
			<td style="text-align: justify;">2003/05/13</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Hàng Microsoft và NVIDIA từ bảng nhacung bị bỏ ra do nhacung_id (10002 và 10003) chỉ có trong 1 bảng. Hàng 500127 (donhang_id) từ bảng donhang bị bỏ do nhacung_id 10004 không có trong bảng nhacung.</p>

<p style="text-align: justify;"><strong>Cú pháp cũ của INNER JOIN</strong></p>

<p style="text-align: justify;">INNER JOIN có thể được viết lại bằng cú pháp cũ như dưới đây (nhưng khuyến khích nên dùng cú pháp có chứa từ khóa INNER JOIN)</p>

<pre id="pre3" style="text-align: justify;">
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
  FROM donhang, nhacung
  WHERE nhacung.nhacung_id = donhang.nhacung_id;</pre>

<div style="text-align: justify;"><iframe allow="autoplay" allowtransparency="true" aria-label="Advertisement" data-google-container-id="a!3" data-google-query-id="CJ-ahpPK6YcDFaVIwgUdgRgSYA" data-load-complete="true" frameborder="0" height="0" hspace="0" id="aswift_2" marginheight="0" marginwidth="0" name="aswift_2" sandbox="allow-scripts allow-same-origin allow-forms allow-presentation allow-popups" scrolling="no" tabindex="0" title="Advertisement" vspace="0" width="694"></iframe></div>

<h3 id="mcetoc_1c8h2e8ks2" style="text-align: justify;">LEFT OUTER JOIN</h3>

<p style="text-align: justify;">Một số cơ sở dữ liệu dùng LEFT JOIN thay vì LEFT OUTER JOIN. Kiểu kết nối này trả về các hàng nằm ở bảng bên trái trong điều kiện ON và chỉ lấy ở các bảng còn lại những hàng đáp ứng được điều kiện đặt ra</p>

<p style="text-align: justify;"><strong>Cú pháp LEFT JOIN</strong></p>

<pre id="pre4" style="text-align: justify;">
SELECT cot
  FROM bang1
  LEFT &#91;OUTER&#93; JOIN bang2
  ON bang1.cot = bang2.cot;</pre>

<p style="text-align: justify;"><img alt="Minh họa LEFT JOIN với kết quả là vùng màu xanh " data-i="1" data-src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-left-join.jpg" data-was-processed="true" height="221" src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-left-join.jpg" width="369" /><br />
<em>Minh họa LEFT JOIN với kết quả là vùng màu xanh</em></p>

<p style="text-align: justify;">Kết quả trả về gồm bang1 và các bản ghi nằm trong bang2 giao với bang1 (vùng màu xanh trong hình).</p>

<p style="text-align: justify;"><strong>Ví dụ LEFT JOIN</strong></p>

<pre id="pre5" style="text-align: justify;">
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
  FROM nhacung
  LEFT OUTER JOIN donhang
  ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Ví dụ trên sẽ trả về tất cả các hàng từ bảng nhacung và chỉ các hàng nào đáp ứng được yêu cầu trong bảng donhang. Nếu giá trị nhacung_id trong bảng nhacung không tồn tại trong bảng donhang thì tất cả các trường trong donhang sẽ hiển thị thành &lt;null&gt; trong bảng kết quả.</p>

<p style="text-align: justify;">Dưới đây là ví dụ cụ thể. Bảng nhacung gồm nhacung_id và nhacung_ten.</p>

<table border="1" width="100%">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_ten</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">IBM</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">Hewlett Packard</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10002</td>
			<td style="text-align: justify;">Microsoft</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10003</td>
			<td style="text-align: justify;">NVIDIA</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Bảng donhang gồm donhang_id, nhacung_id và donhang_ngay.</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>donhang_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">500125</td>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">2003/05/12</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500126</td>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">2003/05/13</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Nếu chạy lệnh SELECT dưới đây:</p>

<pre id="pre6" style="text-align: justify;">
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
  FROM nhacung
  LEFT OUTER JOIN donhang
  ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Thì kết quả sẽ như thế này:</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_ten</strong></td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">IBM</td>
			<td style="text-align: justify;">2003/05/12</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">Hewlett Packard</td>
			<td style="text-align: justify;">2003/05/13</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10002</td>
			<td style="text-align: justify;">Microsoft</td>
			<td style="text-align: justify;">&lt;null&gt;</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10003</td>
			<td style="text-align: justify;">NVIDIA</td>
			<td style="text-align: justify;">&lt;null&gt;</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Các hàng Microsoft và NVIDIA vẫn nằm trong bộ kết quả do đang dùng LEFT OUTER JOIN (lấy tất cả bảng bên trái). Khi đó, donhang_ngay của các bản ghi này sẽ là giá trị &lt;null&gt;.</p>

<h3 id="mcetoc_1c8h2tdih3" style="text-align: justify;">RIGHT OUTER JOIN</h3>

<p style="text-align: justify;">Một số cơ sở dữ liệu dùng RIGHT JOIN thay vì RIGHT OUTER JOIN. Kiểu kết nối này trả về các hàng nằm ở bảng bên phải trong điều kiện ON và chỉ lấy ở các bảng còn lại những hàng đáp ứng được điều kiện đặt ra</p>

<p style="text-align: justify;"><strong>Cú pháp RIGHT JOIN</strong></p>

<pre id="pre7" style="text-align: justify;">
SELECT cot
 FROM bang1
 RIGHT &#91;OUTER&#93; JOIN bang2
 ON bang1.cot = bang2.cot;</pre>

<p style="text-align: justify;"><img alt="Kết quả trả về gồm bang2 và các bản ghi nằm trong bang1 giao với bang2 " data-i="2" data-src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-right-join.jpg" data-was-processed="true" height="218" src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-right-join.jpg" width="366" /><br />
<em>Minh họa RIGHT JOIN</em></p>

<div style="text-align: justify;"><iframe allow="autoplay" allowtransparency="true" aria-label="Advertisement" data-google-container-id="a!4" data-google-query-id="CP3b-JbK6YcDFXBKwgUdw4cKJQ" data-load-complete="true" frameborder="0" height="0" hspace="0" id="aswift_3" marginheight="0" marginwidth="0" name="aswift_3" sandbox="allow-scripts allow-same-origin allow-forms allow-presentation allow-popups" scrolling="no" tabindex="0" title="Advertisement" vspace="0" width="694"></iframe></div>

<p style="text-align: justify;">Kết quả trả về gồm bang2 và các bản ghi nằm trong bang1 giao với bang2 (vùng màu xanh trong hình).</p>

<p style="text-align: justify;"><strong>Ví dụ RIGHT JOIN</strong></p>

<pre id="pre8" style="text-align: justify;">
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
 FROM nhacung
 RIGHT OUTER JOIN donhang
 ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Kết quả trả về là tất cả hàng trong bảng donhang và chỉ các hàng đáp ứng được yêu cầu trong bảng nhacung.</p>

<p style="text-align: justify;">Nếu giá trị nhacung_id trong bảng donhang không tồn tại trong bảng nhacung thì tất cả các trường trong nhacung sẽ hiển thị thành &lt;null&gt; trong bảng kết quả.</p>

<p style="text-align: justify;">Dưới đây là ví dụ cụ thể. Bảng nhacung gồm nhacung_id và nhacung_ten.</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_ten</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">Apple</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">Google</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Bảng donhang gồm donhang_id, nhacung_id và donhang_ngay.</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>donhang_id</strong></td>
			<td style="text-align: justify;"><strong>nhcung_id</strong></td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">500125</td>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">2003/08/12</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500126</td>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">2003/08/13</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500127</td>
			<td style="text-align: justify;">10002</td>
			<td style="text-align: justify;">2003/08/14</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Nếu chạy lệnh SELECT dưới đây:</p>

<pre id="pre9" style="text-align: justify;">
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
 FROM nhacung
 RIGHT OUTER JOIN donhang
 ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Thì kết quả sẽ như thế này:</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>donhang_id</strong></td>
			<td style="text-align: justify;">&nbsp;</td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">500125</td>
			<td style="text-align: justify;">&nbsp;</td>
			<td style="text-align: justify;">2003/08/12</td>
			<td style="text-align: justify;">Apple</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500126</td>
			<td style="text-align: justify;">&nbsp;</td>
			<td style="text-align: justify;">2003/08/13</td>
			<td style="text-align: justify;">Google</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500127</td>
			<td style="text-align: justify;">&nbsp;</td>
			<td style="text-align: justify;">2003/08/14</td>
			<td style="text-align: justify;">&lt;null&gt;</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Hàng 500127 (donhang_id) vẫn nằm trong bảng kết quả vì đang dùng RIGHT OUTER JOIN. Lưu ý nhacung_ten cho bản ghi đó chứa giá trị &lt;null&gt;.</p>

<h3 id="mcetoc_1c8h356v34" style="text-align: justify;">FULL OUTER JOIN</h3>

<p style="text-align: justify;">Một số cơ sở dữ liệu dùng FULL JOIN thay vì FULL OUTER JOIN. Kiểu kết nối này trả về tất cả các hàng nằm ở bảng trái và phải và giá trị NULL đặt ở những nơi không đáp ứng được điều kiện.</p>

<p style="text-align: justify;"><strong>Cú pháp FULL JOIN</strong></p>

<pre id="pre10" style="text-align: justify;">
SELECT cot
 FROM bang1
 FULL &#91;OUTER&#93; JOIN bang2
 ON bang1.cot = bang2.cot;</pre>

<p style="text-align: justify;"><img alt="Minh họa FULL JOIN với kết quả là vùng màu xanh " data-i="3" data-src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-full-join.jpg" data-was-processed="true" height="216" src="https://st.quantrimang.com/photos/image/2018/03/10/ms-sql-server-full-join.jpg" width="368" /><br />
<em>Minh họa FULL JOIN với kết quả là vùng màu xanh</em></p>

<p style="text-align: justify;">Kết quả trả về gồm tất cả bản ghi từ bang1 và bang2.</p>

<p style="text-align: justify;"><strong>Ví dụ FULL JOIN</strong></p>

<pre id="pre11" style="text-align: justify;">
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
 FROM nhacung
 FULL OUTER JOIN donhang
 ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Ví dụ trên sẽ trả về tất cả các hàng từ bảng nhacung và donhang, còn khi không đáp ứng được điều kiện thì giá trị sẽ được đặt là &lt;null&gt; trong bảng kết quả.</p>

<p style="text-align: justify;">Nếu nhacung_id trong bảng nhacung không nằm trong bảng donhang, hay giá trị nhacung_id trong bảng donhang không nằm trong bảng nhacung thì các trường thông tin sẽ hiển thị &lt;null&gt;.</p>

<p style="text-align: justify;">Dưới đây là ví dụ cụ thể về FULL OUTER JOIN. Bảng nhacung gồm nhacung_id và nhacung_ten.</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_ten</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">IBM</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">Hewlett Packard</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10002</td>
			<td style="text-align: justify;">Microsoft</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10003</td>
			<td style="text-align: justify;">NVIDIA</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Bảng donhang gồm donhang_id, nhacung_id và donhang_ngay.</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>donhang_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">500125</td>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">2003/08/12</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500126</td>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">2003/08/13</td>
		</tr>
		<tr>
			<td style="text-align: justify;">500127</td>
			<td style="text-align: justify;">10004</td>
			<td style="text-align: justify;">2003/08/14</td>
		</tr>
	</tbody>
</table>

<p style="text-align: justify;">Nếu chạy lệnh SELECT dưới đây:</p>

<pre id="pre12" style="text-align: justify;">
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
 FROM nhacung
 FULL OUTER JOIN donhang
 ON nhacung.nhacung_id = donhang.nhacung_id;</pre>

<p style="text-align: justify;">Thì kết quả sẽ như thế này:</p>

<table border="1">
	<tbody>
		<tr>
			<td style="text-align: justify;"><strong>nhacung_id</strong></td>
			<td style="text-align: justify;"><strong>nhacung_ten</strong></td>
			<td style="text-align: justify;"><strong>donhang_ngay</strong></td>
		</tr>
		<tr>
			<td style="text-align: justify;">10000</td>
			<td style="text-align: justify;">IBM</td>
			<td style="text-align: justify;">2003/08/12</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10001</td>
			<td style="text-align: justify;">Hewlett Packard</td>
			<td style="text-align: justify;">2003/08/13</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10002</td>
			<td style="text-align: justify;">Microsoft</td>
			<td style="text-align: justify;">&lt;null&gt;</td>
		</tr>
		<tr>
			<td style="text-align: justify;">10003</td>
			<td style="text-align: justify;">NVIDIA</td>
			<td style="text-align: justify;">&lt;null&gt;</td>
		</tr>
		<tr>
			<td style="text-align: justify;">&lt;null&gt;</td>
			<td style="text-align: justify;">&lt;null&gt;</td>
			<td style="text-align: justify;">2003/08/14</td>
		</tr>
	</tbody>
</table>

<div style="text-align: justify;"><iframe allow="autoplay" allowtransparency="true" aria-label="Advertisement" data-google-container-id="a!5" data-google-query-id="CKCM45fK6YcDFehIwgUdqXg83A" data-load-complete="true" frameborder="0" height="0" hspace="0" id="aswift_4" marginheight="0" marginwidth="0" name="aswift_4" sandbox="allow-scripts allow-same-origin allow-forms allow-presentation allow-popups" scrolling="no" tabindex="0" title="Advertisement" vspace="0" width="694"></iframe></div>

<p style="text-align: justify;">Các hàng Microsoft và NVIDIA vẫn nằm trong bộ kết quả do đang dùng FULL OUTER JOIN. Khi đó donhang_ngay của các bản ghi này chứa giá trị &lt;null&gt;. Hàng cho nhacung_id là 10004 cũng nằm trong bảng kết quả nhưng nhacung_id và nhacung_ten của các bản ghi này chứa giá trị &lt;null&gt;.</p>

<p style="text-align: justify;">Một trong số lợi ích lớn nhất của việc dùng cơ sở dữ liệu quan hệ như MySQL là cấu trúc quan hệ của nó cho phép bạn dễ dàng lưu trữ và try vấn thông tin trên nhiều thiết bị.</p>

<p style="text-align: justify;">Hãy cùng nhau xem xét ví dụ về cách truy xuất dữ liệu từ bảng nhiều database dưới đây nhé!</p>

<p style="text-align: justify;">Việc khởi tạo database mẫu không bắt buộc nhưng nếu muốn, bạn có thể tham khảo lệnh terminal này:</p>

<pre id="pre13" style="text-align: justify;">
git clone https://github.com/mdizak/sample-select-db.git
cd sample-select-db
sudo mysql &lt; store.sql
sudo mysql sampledb
mysql&gt; SELECT COUNT(*) FROM customers;</pre>

<p style="text-align: justify;">Bạn sẽ có kết quả là 2000 hàng trong bảng khách hàng (customers).</p>

<p style="text-align: justify;">Lệnh JOIN mặc định được dùng trong database MySQL được gọi là INNER JOIN. Ở đây, nếu muốn thấy tên khách hàng đầu tiên và cuối cùng, cùng số lượng đơn hàng và ngày tháng cho tất cả đơn lớn hơn 1000$, bạn có thể dùng lệnh SQL sau:</p>

<pre id="pre14">
<code>SELECT
c.id, c.first_name, c.last_name, o.amount, o.created_at
FROM
customers c, orders o
WHERE
o.customer_id = c.id AND o.amount &gt;= 1000;</code></pre>

<p style="text-align: justify;">Hi vọng bài viết trên giúp bạn hiểu hơn về sức mạnh của cơ sở dữ liệu quan hệ và cách xây dựng truy vấn SQL. Thật sự không quá khó phải không?</p>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				Quantrimang.com:
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/join-trong-sql-server-8840.html" title="JOIN trong SQL Server">https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/join-trong-sql-server-8840.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; .&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.
		</div>
		<div id="contact">
			<a href="mailto:admin@nguoicodonvn2008.info">admin@nguoicodonvn2008.info</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://nguoicodonvn2008.info/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
		</script>
		<div class="car-top">
  <span><img src="https://nguoicodonvn2008.info/themes/default/images/car.png" alt=""></span>
</div>
<script src="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_e856T",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://nguoicodonvn2008.info/assets/js/language/vi.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/global.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/site.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/news.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/main.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://nguoicodonvn2008.info",
            "logo": "https://nguoicodonvn2008.info/uploads/angel.gif"
        }
        </script>
<script src="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js"></script>
<script type="text/javascript">
var $scrolltop = $('.car-top');
$scrolltop.on('click', function () {
    $('html,body').animate({
        scrollTop: 0
    }, 800);
    $(this).addClass("car-run");
    setTimeout(function(){ $scrolltop.removeClass('car-run');}, 1000);
    return false;
});
$(window).on('scroll', function ()
{ 
    if($(window).scrollTop() >= 200)
    {
        $scrolltop.addClass("show");
        $scrolltop.addClass("car-down");
    }
    else
    {
       $scrolltop.removeClass("show");
       setTimeout(function(){ $scrolltop.removeClass('car-down');}, 300);
    }
});
</script>
</body>
</html>