एक SQLite डेटाबेस है जहाँ हर कुछ सेकंड में 28 मान संग्रहीत किए जाते हैं। मेरे पास समस्या यह है कि मान उस तालिका से भिन्न तालिका में संग्रहीत किया जाता है जहां चर-नाम संग्रहीत होता है। अब यदि संभव हो तो मैं एक्सेल के लिए मूल्यों को निर्यात करना चाहता हूं, इसलिए दोनों तालिकाओं से पूछताछ करने की आवश्यकता है। मूल्य के लिए आईडी हर बार मूल्य संग्रहीत होने पर बढ़ जाती है, इसलिए एक क्वेरी की आवश्यकता होती है जो प्रत्येक आईडी को एक विशिष्ट चर के लिए पढ़ती है। हालाँकि मेरा SQL-ज्ञान इतना अच्छा नहीं है कि मुझे यहाँ कुछ मदद मिल सके।

डेटाबेस कुछ इस तरह बनाया गया है: तालिका 1 (रिकॉर्ड कहा जाता है)

id  valueid  variable
1   1        foo
2   3        bar
3   4        foobar
4   5        foo
5   6        bar
...

तालिका 2 (मूल्य कहा जाता है)

id  value
1   3.14
3   42
4   123
5   3.1415
6   4242
...

तो अगर मैं सभी फू को पढ़ना चाहता हूं, तो इसे मूल्य-तालिका में आईडी 1, 4 आदि के साथ संग्रहीत मूल्य मिल गया है (कभी-कभी 1 के बजाय 2 के साथ मूल्य वृद्धि)। क्या SELECT all value FROM (table) value WHERE record.variable = foo जैसी किसी चीज़ के साथ SQL-कमांड होना संभव होगा?

1
Mattias 6 नवम्बर 2018, 23:25

1 उत्तर

सबसे बढ़िया उत्तर

आप पहली तालिका के valueid कॉलम पर दो तालिकाओं में शामिल हो सकते हैं और foo के मान के साथ तालिका 1 में केवल रिकॉर्ड्स को फ़िल्टर करने के लिए इसे कहां से फ़िल्टर कर सकते हैं:

--Select all columns from t2 (value table)
--Join the value table on table 1 using the foreign key column valueid of
--table 1, which is the relationship to the id column of value table
--Using INNER JOIN will only return results where a match is found in value table
--Use the WHERE clause to filter down to only records from table 1 with variable = 'foo'
--You can use AND to add to the conditions of your WHERE clause to filter by date range

SELECT t2.*
FROM record AS t1
INNER JOIN value AS t2
ON t2.[id] = t1.[valueid]
WHERE t1.[variable] = 'foo' AND t2.[TimeStamp] >= someTimeStamp AND t2.[TimeStamp] <= someOtherTimeStamp
0
Ryan Wilson 6 नवम्बर 2018, 21:05