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 t
và m
, 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.