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

Kết hợp ANSI 1992 JOIN và COMMA trong một truy vấn

Theo liên kết này , bạn không nên trộn lẫn cả hai ký hiệu khi xây dựng các phép nối. Dấu phẩy bạn đang sử dụng để tham gia memebers as m, telephone as t và các lệnh gọi tiếp theo đến inner join , đang gây ra lỗi cột không xác định.

Để đối phó với nó, hãy sử dụng CROSS/INNER/LEFT JOIN thay vì dấu phẩy.

Trước đây, toán tử dấu phẩy (,) và JOIN đều có cùng phương thức, do đó, biểu thức nối t1, t2 JOIN t3 được hiểu là ((t1, t2) JOIN t3). Bây giờ JOIN có mức độ ưu tiên cao hơn, vì vậy các biểu thức được hiểu là (t1, (t2 JOIN t3)). Thay đổi này ảnh hưởng đến câu lệnh sử dụng mệnh đề ON, vì mệnh đề đó chỉ có thể tham chiếu đến các cột trong các toán hạng của phép nối và sự thay đổi về mức độ ưu tiên thay đổi cách diễn giải các toán hạng đó là gì.

Vì mục đích sư phạm, tôi đang thêm truy vấn vì theo tôi, nó phải là:

SELECT m.*, t.*
FROM memebers as m 
    JOIN telephone as t
    JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
    JOIN mitgliedTelephone as mt ON m.id = mt.memeber

Vì bạn không tham gia tm , kết quả cuối cùng sẽ là một sản phẩm cacte; bạn có thể muốn nó được sửa đổi.

Tôi hy vọng nó có ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đang tải thông báo lớp com.mysql.jdbc.Driver ... không được dùng nữa

  2. CHỌN / NHÓM THEO - phân đoạn thời gian (10 giây, 30 giây, v.v.)

  3. Cách đếm các mục trong danh sách MySQL được phân tách bằng dấu phẩy

  4. Ví dụ về CURTIME () - MySQL

  5. Làm cách nào để kết hợp mờ tên công ty trong MYSQL với PHP để tự động hoàn thành?