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

Truy vấn SQLAlchemy hiển thị lỗi Không thể tham gia bảng / 'quy trình làm việc' có thể chọn với chính nó

Phần

.query(Workflow.user_id, func.count(Log.id))

thêm cả WorkflowLog cho truy vấn của bạn. Mô hình đầu tiên được đánh dấu là bảng chính và các mô hình khác được đánh dấu là bảng phụ. Nếu không có lệnh gọi nào đến .join() sau đó, cả bảng chính và bảng phụ sẽ được thêm vào FROM mệnh đề. Nếu có lệnh gọi đến .join() nó sẽ di chuyển bảng nó nhận được đến JOIN mệnh đề. Điều quan trọng ở đây là .join() chỉ có thể được áp dụng cho bảng phụ.

Vấn đề là cuộc gọi của bạn tới

.join(Workflow, Workflow.id == Log.workflow_id)

cố gắng đánh dấu bảng chính là đã tham gia. Để khắc phục sự cố, bạn cần tham gia bảng phụ:

.join(Log, Workflow.id == Log.workflow_id)

Bạn có thể thêm echo=True để xem SQL được tạo bởi SQLAlchemy. Nó thực sự thuận tiện để gỡ lỗi các truy vấn của bạn. Hoặc bạn có thể biên dịch một truy vấn để xem SQL đã tạo.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Di chuyển cơ sở dữ liệu PostgreSQL từ On-Prem sang đám mây bằng AWS RDS

  2. postgres tạo mảng bằng cách sử dụng cửa sổ slide

  3. Những trường hợp ngoại lệ cụ thể nào đại diện cho sự thất bại tuần tự hóa khi Django đang sử dụng mức cách ly giao dịch có thể tuần tự hóa với postgresql?

  4. Các tùy chọn đa thai cho PostgreSQL

  5. Làm thế nào để viết hàm tổ hợp trong postgres?