Tôi có hai bảng. indRailType
chứa danh sách các tên được ghép nối với một giá trị ID mà tôi sử dụng trong các bảng khác để biểu thị loại đường ray. WO_BreakerRail
chứa cột ngày và cột mã đường sắt tương ứng với cùng mã trong indRailType
và một số dữ liệu khác. Có một hàng trong WO_BreakerRail
cho bất kỳ hoạt động nào trên từng loại đường ray, cho mỗi ngày. Vì vậy, tôi có thể có 3 hàng ngày cho 3/19/2010
, mỗi hàng chỉ ra một mã vạch khác nhau và những gì đã xảy ra.LEFT OUTER JOIN với mệnh đề WHERE
Khi tôi sử dụng LEFT OUTER JOIN
sau đây, tôi nhận được một bảng với tất cả các loại đường ray, có null trong các hàng không có gì xảy ra vào ngày 19. Bây giờ, điều này chỉ hoạt động bởi vì tôi chỉ có một ngày được đại diện trong bảng WO_BreakerRail
của tôi ngay bây giờ, thứ 19. Khi tôi thêm nhiều hàng hơn với các ngày khác nhau, mọi thứ sẽ đi haywire.
Đây là tuyên bố của tôi SQL, mà ngay bây giờ mang lại cho tôi một cách chính xác kết quả tôi muốn:
SELECT WO_BreakerRail.ID, indRailType.RailType, WO_BreakerRail.CreatedPieces,
WO_BreakerRail.OutsideSource, WO_BreakerRail.Charged,
WO_BreakerRail.Rejected, WO_BreakerRail.RejectedToCrop
FROM indRailType
LEFT OUTER JOIN WO_BreakerRail
ON indRailType.RailCode = WO_BreakerRail.RailCode
Bây giờ, khi tôi thêm vào một điều khoản WHERE WO_BreakerRail.Date = @Date
tôi mất tất cả các hàng trong JOIN
mà không có gì xảy ra. Tôi không muốn điều đó. Từ việc đọc lên, có vẻ như một FULL OUTER JOIN
là những gì tôi muốn, nhưng SQL Server Compact Edition không hỗ trợ FULL OUTER JOIN
s. Có cách nào xung quanh vấn đề này không, hay tôi đang tìm cái gì khác hoàn toàn?
Đừng quên yếu tố trong phần "thời gian" của @Date. Nếu các giá trị có thể thay đổi giữa nửa đêm và nửa đêm, bạn sẽ phải sử dụng một số dạng giữa mệnh đề. –
Câu trả lời này hoạt động hoàn hảo, cảm ơn bạn. Philip: Cảm ơn con trỏ đó, mặc dù tôi gặp phải vấn đề đó trước đó trong dự án này, nhưng tôi đã sửa nó trong mã C#, xóa tất cả các phần thời gian, mặc định mỗi ngày đến nửa đêm. – Wesley
@Wesley, cách tốt nhất là loại dữ liệu datetime "sàn" để xóa thời gian, do đó, thời gian là 00: 00: 00.000 và không phải nửa đêm. –