2012-11-05 26 views
6

Tôi gặp sự cố với hệ thống mà cha tôi sử dụng để báo cáo tại công ty của anh ấy. Tôi đã không xây dựng nó nhưng tôi đang cố gắng hết sức để quấn đầu quanh nó. Đó là ASP và tôi không phải là rất thạo trong nó (hoặc viết sql cho rằng vấn đề).Sự cố khi kết hợp 3 mục bảng SQL khác nhau và nhận số tiền

Về cơ bản tôi có ba bảng tôi đang làm việc với, Mục, ItemHistory và Thiết bị. Trong những bảng gì tôi đang cố gắng làm là

  • Lấy mục người dùng đã làm việc trên thông qua cột "serialNumber" từ "Item History" bảng
  • Hãy so sánh con số sê-ri đến cột "serialNumber" trong bảng "Mục" để nhận loại thiết bị (từ cột thiết bị)
  • Sử dụng loại thiết bị để lấy giá trị số được xác định trước từ cột "điểm" trong bảng "Thiết bị"
  • Lưu giá trị và thêm giá trị với bất kỳ giá trị nào khác đã được truy vấn quay lại sau đó hiển thị tổng số.

* Xem Cập nhật *

Như bạn có thể thấy, nó sẽ dễ dàng hơn nhiều nếu các Loại thiết bị đã được đưa vào bảng ItemHistory, nhưng nó đã không được. Tôi đã thử JOINing các bảng nhưng tiếp tục nhận được lỗi (đó là từ tôi thiếu kiến ​​thức im khá nhất định). Truy vấn là theo phạm vi ngày và người dùng (từ bảng ItemHistory), nhưng tôi nghĩ rằng tôi đã nhận ra điều đó. Tôi chỉ không thể làm cho nó để tham khảo tất cả các bảng và thêm các "điểm" với nhau.

Bất kỳ trợ giúp nào được đánh giá cao! Nêu bạn cân thêm bât ky thông tin gi nưa thi cho tôi biêt. Cảm ơn bạn trước.


Cập nhật

Vì vậy, về cơ bản những gì tôi đang gặp vấn đề với bây giờ là truy vấn tiếp tục quay trở lại với "Hoặc BOF hay EOF là True, hoặc các bản ghi hiện đã bị xóa. Hoạt động yêu cầu đòi hỏi một hiện tại ghi lại." mà tôi nghĩ là được gây ra bởi vì nó chỉ là thêm các số trong cột điểm. Tôi nghĩ rằng vấn đề với câu hỏi cuối cùng của tôi là tôi làm cho nó có vẻ như có "Điểm" cho mọi thiết bị, nhưng thực sự có một số thiết bị (cho phép nói năm) và có thể có nhiều số sê-ri tất cả chỉ vào một thiết bị. Tôi nghĩ rằng đây là nơi mà các truy vấn đang chạy vào rắc rối (nhưng tôi có thể sai). Ngoài ra, câu lệnh sql của tôi trông khá chính xác giống như một bitbobbytables được đăng bên dưới, ngoại trừ các biến của riêng tôi được thêm vào.

Đây là cơ sở dữ liệu trông như thế nào.

ItemHistory Bảng

Date  | SerialNumber | DeviceType | User 
----------|--------------|-------------|------- 
11/1/12 | 123-456-789 |  NULL | Bill 
11/1/12 | 456-123-987 |  NULL | Bill 
11/1/12 | 987-654-321 |  NULL | Bill 
11/1/12 | 216-897-631 |  NULL | Bill 
11/1/12 | 874-547-277 |  NULL | Bill 

SerialNumber | DeviceType 
    -------------|------------- 
    123-456-789 | Device1 
    456-123-987 | Device2 
    987-654-321 | Device3 
    216-897-631 | Device1 
    874-547-277 | Device2 

Devices mục Bảng Bảng

Device | Points 
----------|---------- 
    Device1 | 20 
    Device2 | 25 
    Device3 | 40 

Và những gì tôi hy vọng sản lượng sẽ là

User | Points 
--------|---------- 
    Bill | 130 
+3

+1: Bản thân câu hỏi không phải là mới hay cũng không sáng tạo trên trang này. NHƯNG bạn đã thực hiện khá nhiều nỗ lực _ ngay từ start_ để mang lại các ví dụ rõ ràng và định dạng tốt đẹp quá. Theo kịp phong cách tốt. –

Trả lời

1

Bạn có thể tóm tắt các điểm với nhau, và nhóm của User ID:

SELECT [User], SUM(Points) AS Points 
FROM ItemHistory IH 
INNER JOIN Item I ON IH.SerialNumber = I.SerialNumber 
INNER JOIN Devices D ON I.DeviceType = D.Device 
WHERE IH.[Date] = @YourDateVariable 
GROUP BY [User] 
+0

Tuyệt vời, cảm ơn sự giúp đỡ của bạn! Bây giờ tôi đang chạy vào một lỗi "] Không tham khảo cột duy nhất: Người dùng. Tôi chỉ có thể giả định nó là bởi vì có một cột người dùng trong bảng" Items "(người ban đầu đặt nó trong hệ thống) và một trong ItemHistory Tôi đã không bao gồm nó trong câu hỏi ban đầu của tôi bởi vì tôi đã không nghĩ rằng nó sẽ quan trọng nhiều. Có bất cứ điều gì tôi có thể làm để sửa lỗi này? ngoài việc thay đổi các tên cột, tôi có nghĩa là – willku

+0

Chắc chắn, bạn có thể sử dụng tên bảng (hoặc trong trường hợp này là bí danh) để chỉ một trường 'Người dùng 'cụ thể' Bạn có thể thực hiện 'CHỌN I. [Người dùng]' và 'NHÓM CỦA I. [Người dùng]' – LittleBobbyTables

+0

Tôi biết đó là một trong khi hy vọng bạn có thể giúp tôi một lần nữa, tôi đã phải tạm dừng nó và bây giờ tôi đang xem xét lại nó và tôi nghĩ rằng tôi đang tiến gần hơn. Vấn đề tôi đang gặp bây giờ là truy vấn chỉ thêm các điểm trong cột điểm , thay vì Nhìn vào số sê-ri đầu tiên, tìm thiết bị, sau đó lấy điểm, chuyển tới số sê-ri thứ hai, tìm kiếm số devi ce, sau đó nhận được điểm cho nó, vv và cuối cùng thêm hai (hoặc nhiều hơn) giá trị với nhau. Một số số sê-ri sẽ tham chiếu cùng một thiết bị nhiều lần. Tôi đã thử mọi thứ tôi có thể nghĩ đến. Cảm ơn bạn! – willku

Các vấn đề liên quan