2012-11-05 29 views
6

प्राप्त करने में समस्या मुझे एक ऐसी प्रणाली में परेशानी हो रही है जिसे मेरे पिता अपनी कंपनी में रिपोर्टिंग के लिए उपयोग करते हैं। मैंने इसे नहीं बनाया लेकिन मैं इसके चारों ओर अपने सिर को लपेटने के लिए अपनी पूरी कोशिश कर रहा हूं। यह एएसपी है और मैं इसमें बहुत अच्छी तरह से नहीं जानता (या उस मामले के लिए एसक्यूएल लिख रहा हूं)।समस्या 3 अलग-अलग एसक्यूएल टेबल वस्तुओं को जोड़ती है और योग

असल में मेरे पास तीन टेबल हैं जिनके साथ मैं काम कर रहा हूं, आइटम, आइटम इतिहास और डिवाइस। उन तालिकाओं कि मैं क्या करने की कोशिश कर रहा हूँ में है

  • "आइटम इतिहास" तालिका से आइटम कोई उपयोगकर्ता "serialnumber" कॉलम के माध्यम से काम किया है जाओ
  • तुलना करें कि "serialnumber" कॉलम के सीरियल नंबर डिवाइस प्रकार (डिवाइस कॉलम से) प्राप्त करने के लिए "आइटम" तालिका में
  • "डिवाइस" तालिका में "अंक" कॉलम से पूर्व निर्धारित संख्या मान को पकड़ने के लिए डिवाइस प्रकार का उपयोग करें
  • मान स्टोर करें और इसे जोड़ें क्वेरी द्वारा वापस खींचे गए किसी अन्य मूल्य के लिए कुल दिखाएं।

* देखें अद्यतन *

आप देख सकते हैं, यह बहुत आसान होता है, तो डिवाइस प्रकार ItemHistory तालिका में शामिल किया गया था, लेकिन यह नहीं था। मैंने तालिकाओं में शामिल होने का प्रयास किया है लेकिन त्रुटियां प्राप्त करना जारी रखें (जो कि ज्ञान की कमी से है, मैं काफी निश्चित हूं)। क्वेरी दिनांक सीमा और उपयोगकर्ता (ItemHistory तालिका से) है, लेकिन मुझे लगता है कि मुझे यह पता चला है। मैं बस इसे सभी तालिकाओं का संदर्भ देने के लिए नहीं मिल सकता और "अंक" को एक साथ जोड़ सकता हूं।

किसी भी मदद की बहुत सराहना की जाती है! अगर आपको और जानकारी चाहिए तो मुझे बताएं। पहले ही, आपका बहुत धन्यवाद।


अद्यतन

तो बुनियादी तौर पर मैं क्या के साथ समस्याओं कर रहा हूँ कि अब क्वेरी के साथ वापस आ रहा रखता है "या तो BOF या EOF यह सच है, या मौजूदा रिकॉर्ड हटा दिया गया है। अनुरोधित आपरेशन एक वर्तमान की आवश्यकता है रिकॉर्ड। " जो मुझे लगता है कि ऐसा इसलिए हो रहा है क्योंकि यह केवल अंक कॉलम में संख्या जोड़ रहा है।

मुझे लगता है कि मेरे आखिरी प्रश्न के साथ समस्या यह है कि मैंने ऐसा लगता है कि प्रत्येक डिवाइस के लिए "अंक" थे, लेकिन वास्तव में डिवाइस की एक निश्चित संख्या है (पांच कहें) और कई सीरियल नंबर हो सकते हैं एक डिवाइस पर इशारा करते हुए। मुझे लगता है कि यह वह जगह है जहां क्वेरी परेशानी में चल रही है (लेकिन मैं गलत हो सकता हूं)। साथ ही, मेरा एसक्यूएल स्टेटमेंट नीचे पोस्ट किए गए एक छोटे-छोटे बॉबटेबल्स की तरह दिखता है,

यहां डेटाबेस जैसा दिखता है।

ItemHistory टेबल

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 

डिवाइस टेबल

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

और क्या मैं आशा करता हूं व्यवहृत किया जा सकेगा

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

+1: प्रश्न स्वयं न तो नया है और न ही इस साइट पर अभिनव है। लेकिन आपने स्पष्ट उदाहरण और अच्छे प्रारूपण को लाने के लिए start_ से थोड़ा सा प्रयास किया है। अच्छी शैली बनाए रखें। –

उत्तर

1

आप अंक एक साथ जोड़ सकते हैं, और उपयोगकर्ता आईडी से समूह है:

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

बहुत बढ़िया, आपकी मदद के लिए धन्यवाद! अब मैं एक त्रुटि में चल रहा हूं "] गैर अद्वितीय कॉलम संदर्भ: उपयोगकर्ता। मैं केवल यह मान सकता हूं क्योंकि" आइटम "तालिका में एक उपयोगकर्ता कॉलम है (वह व्यक्ति जो प्रारंभ में इसे सिस्टम में डालता है) और आइटम हिस्ट्री में से एक तालिका। मैंने इसे अपने मूल प्रश्न में शामिल नहीं किया क्योंकि मुझे नहीं लगता था कि इससे कोई फर्क नहीं पड़ता। क्या यह कुछ भी करने के लिए मैं कर सकता हूं? कॉलम नाम बदलने से अलग, मेरा मतलब है। – willku

+0

निश्चित रूप से, आप इसका उपयोग कर सकते हैं किसी विशिष्ट '[उपयोगकर्ता]' फ़ील्ड को संदर्भित करने के लिए तालिका का नाम (या इस मामले में उपनाम)। आप 'चयन I [उपयोगकर्ता]' और 'ग्रुप बाय I [उपयोगकर्ता]' – LittleBobbyTables

+0

कर सकते हैं मुझे पता है कि यह एक रहा है जबकि उम्मीद है कि आप मेरी मदद कर सकते हैं, मुझे इसे पकड़ना पड़ा और अभी मैं इसे फिर से देख रहा हूं और मुझे लगता है कि मैं करीब आ रहा हूं। अब मेरी समस्या यह है कि क्वेरी सिर्फ अंक कॉलम में अंक जोड़ रही है , पहले सीरियल नंबर को देखने के बजाय, डिवाइस ढूंढना, फिर अंक प्राप्त करना; दूसरे सीरियल नंबर पर जाना, देवी ढूंढना सीई, फिर इसके लिए अंक प्राप्त करना, आदि और आखिरकार उन दो (या अधिक) मानों को एक साथ जोड़ना। कुछ सीरियल नंबर एक ही डिवाइस को कई बार संदर्भित करेंगे। मैंने जो कुछ भी सोच सकता हूं उसकी कोशिश की है। धन्यवाद! – willku