Tôi đang cố gắng hiểu cách tạo truy vấn để lọc ra một số kết quả dựa trên kết nối bên trong.cách ngăn trùng lặp với truy vấn tham gia bên trong (Postgres)
Hãy xem xét các dữ liệu sau:
formulation_batch
-----
id project_id name
1 1 F1.1
2 1 F1.2
3 1 F1.3
4 1 F1.all
formulation_batch_component
-----
id formulation_batch_id component_id
1 1 1
2 2 2
3 3 3
4 4 1
5 4 2
6 4 3
7 4 4
Tôi muốn chọn tất cả các hồ sơ formulation_batch với một PROJECT_ID trong tổng số 1, và có một formulation_batch_component với một component_id trong tổng số 1 hoặc 2. Vì vậy, tôi chạy truy vấn sau đây:
SELECT "formulation_batch".*
FROM "formulation_batch"
INNER JOIN "formulation_batch_component"
ON "formulation_batch"."id" = "formulation_batch_component"."formulationBatch_id"
WHERE "formulation_batch"."project_id" = 1
AND (("formulation_batch_component"."component_id" = 2
OR "formulation_batch_component"."component_id" = 1))
Tuy nhiên, điều này trả về một mục trùng lặp:
1;"F1.1"
2;"F1.2"
4;"F1.all"
4;"F1.all"
Có cách nào để sửa đổi truy vấn này để tôi chỉ lấy lại các bản ghi formulation_batch duy nhất phù hợp với tiêu chí?
EG:
1;"F1.1"
2;"F1.2"
4;"F1.all"
Cảm ơn thời gian của bạn!
Cảm ơn, tôi đã quên về sự khác biệt. Nó không phải là hiệu suất tốt nhất khôn ngoan, nhưng vẫn tốt hơn so với lọc nó ra ở cấp phần mềm. – drkstr1