Tôi đang sử dụng SQL Server 2008 và tôi có 3 bảng, x
, y
và z
. y
tồn tại để tạo mối quan hệ nhiều-nhiều giữa x
và z
.Giá trị tối đa trong mối quan hệ nhiều-nhiều
x y z
-- -- --
id xid id
zid sort
Tất cả các trường ở trên là int
.
Tôi muốn tìm phương pháp hoạt động tốt nhất (không bao gồm việc không chuẩn hóa) tìm số z
với số cao nhất sort
cho bất kỳ x
và trả lại tất cả các trường từ cả ba bảng.
mẫu dữ liệu:
x: id
--
1
2
y: xid zid
--- ---
1 1
1 2
1 3
2 2
z: id sort
-- ----
1 5
2 10
3 25
Result bộ nên
xid zid
--- ---
1 3
2 2
Lưu ý rằng nếu có nhiều hơn một z
tồn tại với cùng một giá trị cao nhất sort
, sau đó tôi vẫn chỉ muốn một hàng cho mỗi x
.
Cũng lưu ý rằng trong tình huống thực tế của tôi, có các trường khác trong cả ba bảng mà tôi sẽ cần trong tập kết quả của mình.
Tôi cho rằng bạn đang theo giải pháp của tình huống thế giới thực? Tôi khuyên bạn nên cập nhật câu hỏi của mình bằng một vài trường bổ sung cho mỗi bảng và xác định những gì bạn muốn tập hợp kết quả của mình tìm kiếm. – MPritchard
Chỉ để thêm vào câu hỏi này. Thiết kế cơ sở dữ liệu của bạn đã được sửa hay vẫn đang được triển khai? Tôi thấy lạ rằng "sắp xếp" của bạn nằm trong bảng z và không nằm trong bảng y. Tôi thường thấy rằng một mối quan hệ nhiều đến nhiều như thế này thường có loại mà "z" bạn có thể quan tâm trên bảng "y". Bỏ qua tôi nếu tôi là sai mặc dù, nó không thể biết mà không có bối cảnh. –
Nó vẫn đang được thực hiện và tôi đồng ý với những gì bạn nói, nhưng trong bối cảnh của những gì đang được xây dựng, sắp xếp là và nên được trên bảng 'z'. – enashnash