Tôi muốn có thể tham gia bên trong hai bảng dựa trên kết quả của một biểu thức.Tham gia bên trong có điều kiện
Những gì tôi đã cố gắng cho đến nay:
INNER JOIN CASE WHEN RegT.Type = 1 THEN TimeRegistration ELSE DrivingRegistration AS RReg
ON
RReg.RegistreringsId = R.Id
Trung Đoàn là một tham gia tôi đã thực hiện ngay trước khi tham gia này:
INNER JOIN RegistrationTypes AS RegT ON R.RegistrationTypeId = RegT.Id
SQL-Kịch bản này không hoạt động.
Vì vậy, tất cả trong tất cả, nếu Type
là 1, thì nó sẽ tham gia trên bảng TimeRegistration
khác nên tham gia trên DrivingRegistration
.
Giải pháp:
Trong tuyên bố chọn của tôi, tôi biểu diễn tham gia sau đây:
INNER JOIN RegistrationTypes AS RegT ON R.RegistrationTypeId = RegT.Id
LEFT OUTER JOIN TimeRegistration AS TReg ON TReg.RegistreringsId = R.Id AND RegT.Type = 1
LEFT OUTER JOIN DrivingRegistration AS DReg ON DReg.RegistreringsId = R.Id AND RegT.Type <>1
Sau đó, tôi thay đổi nội dung của tôi where-clause
để sản xuất các chính xác, tùy thuộc vào RegType
, như thế này:
WHERE (CASE RegT.Type WHEN 1 THEN TReg.RegistreringsId ELSE DReg.RegistreringsId END = R.Id)
Bạn không thể làm điều đó như thế! Không thể sử dụng 'CASE' để tự động hoán đổi vào và ra các phần ngẫu nhiên của truy vấn. Những bảng này có cùng cấu trúc không? –
Bạn có gặp lỗi không? Nếu vậy, nó là cái gì? – AndrewC