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

Cột không xác định {0} trong mệnh đề trên

Tôi đoán Puzzles không có cột PuzzleID . Cột có được gọi đơn giản là ID không trong bảng đó? Hoặc Puzzle_ID ?

Bạn nên chạy SHOW CREATE TABLE Puzzles để xem định nghĩa hiện tại của bảng đó.

Đôi khi, một câu trích dẫn bị thiếu có thể là thủ phạm:

... ON `Puzzles.PuzzleID` ...

Ở trên sẽ tìm kiếm một cột có tên theo nghĩa đen là "Puzzles.PuzzleID , "nghĩa là tên cột dài 16 ký tự với dấu chấm ở giữa.

@Bell xứng đáng nhận được giải thưởng vì nhận thấy rằng bạn đang trộn các phép nối kiểu dấu phẩy và phép nối kiểu SQL-92. Tôi không nhận thấy điều đó!

Bạn không nên sử dụng cả hai trong cùng một truy vấn, vì thứ tự ưu tiên của các thao tác nối có thể gây ra sự nhầm lẫn.

JOIN từ khóa có mức độ ưu tiên cao hơn. Đơn giản hóa truy vấn của bạn để chúng tôi có thể xem xét các biểu thức bảng, nó sẽ được đánh giá như sau:

SELECT . . . 
FROM (Puzzles JOIN PuzzleCategories),
(Clients JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages)

Vấn đề là tham gia vào PuzzleUsages cần so sánh với Puzzles.PuzzleID nhưng vì vấn đề ưu tiên, nó không thể. Cột không phải là một phần của toán hạng của JOIN cuối cùng .

Bạn có thể sử dụng dấu ngoặc đơn để giải quyết lỗi, ghi đè rõ ràng mức độ ưu tiên của biểu thức bảng (giống như cách bạn sử dụng dấu ngoặc đơn trong biểu thức số học):

SELECT . . . 
FROM Puzzles JOIN (PuzzleCategories, Clients)
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages

Hoặc bạn chỉ có thể sử dụng SQL-92 JOIN cú pháp nhất quán. Tôi đồng ý với @Bell rằng điều này rõ ràng hơn.

SELECT . . . 
FROM Puzzles JOIN PuzzleCategories JOIN Clients
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đặt lại mật khẩu gốc MySQL

  2. MySQL Cast dưới dạng Boolean

  3. Cách tiếp cận của Ajax để điền một menu thả xuống động thứ hai dựa trên lựa chọn trong phần đầu tiên

  4. Hướng dẫn thiết kế cơ sở dữ liệu cho trình quản lý tác vụ trong MySQL

  5. Lệnh MySQL Giải thích bỏ qua LIMIT?