Truy vấn con phụ thuộc trong cơ sở dữ liệu

22:54 30/05/2025

Trong quá trình xây dựng và truy xuất dữ liệu từ cơ sở dữ liệu quan hệ, không ít lần người dùng cần thực hiện các truy vấn có tính chất phụ thuộc – khi một truy vấn cần đến dữ liệu của truy vấn khác. Truy vấn con phụ thuộc (Correlated Subquery – TVC) là một kỹ thuật hữu ích để giải quyết các tình huống như vậy. Không giống như truy vấn con độc lập, TVC là truy vấn lồng bên trong một truy vấn khác (gọi là truy vấn cha), và nó phụ thuộc vào từng dòng dữ liệu của truy vấn cha. Cùng FPT Polytechnic TP HCM tìm hiểu về truy vấn con trong bài viết dưới đây.

Cú pháp tổng quát của truy vấn con tương quan

Trong mệnh đề SELECT

SELECT 

    tên_cột_1,

    (SELECT biểu_thức

     FROM bảng_phụ

     WHERE bảng_phụ.cột = bảng_chính.cột) AS tên_cột_mới

FROM 

    bảng_chính;

Trong mệnh đề FROM

SELECT 

    cột_hoặc_biểu_thức

FROM 

    bảng_chính, 

    (SELECT cột_phụ FROM bảng_phụ WHERE bảng_phụ.cột = bảng_chính.cột) AS bí_danh

WHERE 

    điều_kiện_kết_hợp;

Trong mệnh đề HAVING

SELECT 

    cột_nhóm, 

    hàm_tổng_hợp

FROM 

    bảng

GROUP BY 

    cột_nhóm

HAVING 

    hàm_tổng_hợp OP 

    (SELECT biểu_thức FROM bảng_phụ WHERE bảng_phụ.cột = bảng.cột_nhóm);

Đặc điểm của truy vấn con tương quan

  • Truy vấn con được thực hiện lặp lại cho mỗi dòng (hoặc mỗi nhóm) trong truy vấn cha.
  • Có sự liên hệ dữ liệu giữa truy vấn cha và truy vấn con thông qua các điều kiện trong mệnh đề WHERE hoặc HAVING.
  • Giúp biểu đạt được các yêu cầu phức tạp mà truy vấn thông thường khó diễn đạt.

Ví dụ minh họa

Tìm những nhân viên có mức lương cao hơn mức lương trung bình của phòng ban mà họ đang làm việc.

SELECT ma_nv, ten_nv, luong

FROM nhanvien nv1

WHERE luong > (

    SELECT AVG(luong)

    FROM nhanvien nv2

    WHERE nv2.ma_pb = nv1.ma_pb

);

Ở ví dụ này, truy vấn con phụ thuộc vào từng dòng trong truy vấn cha thông qua điều kiện nv2.ma_pb = nv1.ma_pb, thể hiện rõ bản chất phụ thuộc.

Ưu điểm của TVC tương quan

  • Diễn đạt các điều kiện lọc động, thay đổi theo từng dòng dữ liệu.
  • Rất hiệu quả trong các trường hợp cần so sánh trong phạm vi nhóm liên quan (như so với trung bình, tổng, tối đa theo nhóm).

Nhược điểm của TVC tương quan

  • Có thể gây chậm khi xử lý dữ liệu lớn do truy vấn con được thực hiện lặp lại.
  • Đòi hỏi người viết cần hiểu rõ mối quan hệ dữ liệu và logic truy vấn.

Truy vấn con phụ thuộc là một công cụ mạnh trong ngôn ngữ SQL giúp xử lý linh hoạt và động các yêu cầu truy vấn dữ liệu. Khi hiểu rõ bản chất và sử dụng đúng cách, TVC sẽ giúp người dùng viết được những truy vấn tối ưu, chính xác và gọn gàng trong các hệ thống cơ sở dữ liệu thực tế.

Giảng viên Lê Thị Hồng Đào
Bộ môn Ứng dụng phần mềm
FPT Polytechnic TP HCM

Hỗ trợ tư vấn và giải đáp thông tin tuyển sinh FPT Polytechnic

Cùng chuyên mục

Đăng ký nhập học tại FPT Polytechnic 2026

  • Max. file size: 50 MB.
  • Max. file size: 50 MB.
  • Max. file size: 50 MB.