×

Xác định điều kiện JOIN với lệnh ON trong MySQL

Khi làm việc với cơ sở dữ liệu MySQL, nhiều tình huống yêu cầu bạn kết hợp dữ liệu từ nhiều bảng khác nhau. Để thực hiện điều này, lệnh JOIN được sử dụng. Trong lệnh JOIN, điều kiện JOIN được xác định thông qua từ khóa ON, giúp chỉ định cách mà các bảng sẽ được kết hợp với nhau. Với điều kiện cụ thể này, bạn có thể kiểm soát chính xác cách dữ liệu từ các bảng khác nhau được liên kết.

  1. Khái niệm cơ bản về JOIN:

    • INNER JOIN: Trả về các hàng khi có sự phù hợp trong cả hai bảng.
    • LEFT JOIN (hoặc LEFT OUTER JOIN): Trả về tất cả các hàng từ bảng bên trái và các hàng phù hợp từ bảng bên phải. Nếu không có hàng nào phù hợp thì kết quả sẽ chứa NULL cho bên bảng phải.
    • RIGHT JOIN (hoặc RIGHT OUTER JOIN): Trả về tất cả các hàng từ bảng bên phải và các hàng phù hợp từ bảng bên trái. Nếu không có hàng nào phù hợp thì kết quả sẽ chứa NULL cho bên bảng trái.
    • FULL JOIN (hoặc FULL OUTER JOIN): Trả về tất cả các hàng khi có sự phù hợp trong một trong hai bảng. Thật không may, MySQL hiện không hỗ trợ FULL OUTER JOIN, nhưng có thể đạt được cùng một kết quả bằng cách sử dụng một kết hợp của LEFT JOIN và RIGHT JOIN với UNION.
  2. Cú pháp cơ bản của JOIN:

    SELECT column_names
    FROM table1
    JOIN table2
    ON table1.common_column = table2.common_column;
    

    Trong cú pháp này, table1.common_columntable2.common_column là các cột được sử dụng để kết nối hai bảng.

  3. Ví dụ thực tế: Giả sử chúng ta có hai bảng: studentscourses.

    Bảng students:

    student_id student_name
    1 Alice
    2 Bob
    3 Charlie

    Bảng courses:

    course_id student_id course_name
    1 1 Mathematics
    2 2 English
    3 1 Science

    Để kết hợp hai bảng này và lấy thông tin về tên học sinh và các khóa học mà họ đã đăng ký, chúng ta có thể sử dụng INNER JOIN với từ khóa ON như sau:

    SELECT students.student_name, courses.course_name
    FROM students
    INNER JOIN courses
    ON students.student_id = courses.student_id;
    

    Kết quả sẽ là:

    student_name course_name
    Alice Mathematics
    Alice Science
    Bob English
  4. Điều kiện JOIN phức tạp hơn: Bạn không bị giới hạn với một điều kiện JOIN duy nhất. Bạn có thể sử dụng nhiều điều kiện và các phép so sánh khác nhau để tinh chỉnh cách mà các bảng của bạn được kết hợp.

    SELECT students.student_name, courses.course_name
    FROM students
    JOIN courses
    ON students.student_id = courses.student_id
    AND courses.course_id > 1;
    

    Đây là ví dụ với một điều kiện bổ sung: chỉ lấy các khóa học có course_id lớn hơn 1.

  5. Sử dụng các phép JOIN khác:

    • Để sử dụng LEFT JOIN:

      SELECT students.student_name, courses.course_name
      FROM students
      LEFT JOIN courses
      ON students.student_id = courses.student_id;
      

      Kết quả sẽ bao gồm tất cả học sinh, ngay cả khi họ không có khóa học đăng ký.

    • Để sử dụng RIGHT JOIN:

      SELECT students.student_name, courses.course_name
      FROM students
      RIGHT JOIN courses
      ON students.student_id = courses.student_id;
      

      Kết quả sẽ bao gồm tất cả các khóa học, ngay cả khi không có học sinh nào đăng ký khóa học đó.

  6. Lời kết: Việc sử dụng lệnh JOIN và cách xác định điều kiện JOIN với từ khóa ON trong MySQL là một kỹ năng quan trọng để làm việc hiệu quả với cơ sở dữ liệu. Bằng cách hiểu rõ các loại JOIN và cách cấu hình điều kiện JOIN, bạn sẽ có thể trích xuất dữ liệu một cách hiệu quả và chính xác từ nhiều bảng trong cơ sở dữ liệu của mình.

Comments