Phần
.query(Workflow.user_id, func.count(Log.id))
thêm cả Workflow
và Log
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.