Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm thế nào để kiểm tra trong và giữa mỗi bảng trong số một số bảng?

Vâng, Leonid là quyền tham gia bảng là những gì bạn cần. "Mệnh đề SQL JOIN được sử dụng để kết hợp các hàng từ hai hoặc nhiều bảng, dựa trên một trường chung giữa chúng." - http://www.w3schools.com/sql/sql_join.asp đơn giản như thế. Bạn nói đối với bảng A và bảng B rằng trường chung là ShopLot và đối với bảng B và C là ContainerRef khớp với ContainerID.

Hãy khay làm điều đó từng bước.

Vì vậy, trước tiên hãy chọn các cột từ các bảng mà chúng tôi muốn hiển thị

 SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID

Bạn thấy chỉ có một ShopLot và ContainerRef vì đó là trường phổ biến như chúng ta đã nói trước đây và không cần phải hiển thị cùng một ngày hai lần trong một hàng.

Bước tiếp theo sẽ là xem TỪ chúng ta CHỌN cột này ở đâu. Trong bước này, chúng tôi kết hợp các hàng từ các bảng riêng biệt này và về cơ bản tạo một bảng với tất cả các cột này từ câu lệnh select. Nó sẽ giống như thế này

FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

Chuyện gì đã xảy ra ở đây. Đầu tiên chúng tôi nói CHỌN (cái gì đó) TỪ Table_A và (bên trong) tham gia cùng cô ấy với Table_B ... Sau đó, có một câu hỏi làm thế nào để nối hai bảng này (dựa trên cái gì?)? Và câu trả lời là BẬT trường Table_A.ShopLot và Table_B.ShopLot. Lấy một hàng từ Table_A, xem giá trị của trường ShopLot và tìm tất cả các hàng có giá trị đó (nếu có) trong Table_B và nối chúng. Table_C được kết hợp giống như cách chỉ thay đổi tên của các trường.

Hơn bước thứ ba là tạo mệnh đề WHERE. Đây có lẽ là phần dễ nhất vì bây giờ chúng ta có một bảng lớn và chúng ta chỉ cần nói những gì chúng ta cần

WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

Và đó là nó. Tôi đã cố gắng làm cho nó đơn giản nhất có thể. Tôi cá là có rất nhiều lời giải thích trên mạng chỉ cần bạn tìm kiếm một chút ...

Đây là một đoạn mã hoàn chỉnh:

SELECT Table_A.ID, Table_A.UnitTypeID, Table_A.ShopLot, Table_B.ID, Table_B.UnitTypeID,
         Table_B.ContainerRef, Table_C.ID, Table_C.PartTypeID
FROM Table_A
INNER JOIN Table_B
ON Table_A.ShopLot = Table_B.ShopLot
INNER JOIN Table_C
ON Table_B.ContainerRef = Table_C.ContainerId

WHERE Table_A.UnitTypeID='PAD' AND Table_B.UnitType.ID='FROG' 
  AND Table_C.PartTypeID='FLIES'

Tôi hy vọng điều này sẽ giúp một chút nó không phức tạp như lúc đầu. Sẽ tốt hơn nếu ví dụ với hai bảng nhưng nó là những gì nó là. GL



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL trùng lặp ngày tháng, không có xung đột

  2. Trường MySQL đơn với các giá trị được phân tách bằng dấu phẩy

  3. Quản lý giám sát và hoạt động của MySQL 8.0 với ClusterControl

  4. Ngày hệ thống đặt chỗ

  5. Làm thế nào để đọc một tệp và thêm nội dung của nó vào cơ sở dữ liệu?