मैं एक श्रेणी और उपश्रेणी प्रणाली बना रहा हूं। मान लीजिए मेरे पास एक मुख्य श्रेणी है जैसे 'Food'। इसका एक बच्चा है जैसे 'Drinks', ड्रिंक्स का एक और बच्चा है 'Juice', जूस का बच्चा 'Organic' और ऑर्गेनिक का बच्चा 'Grape Juice' है। तो मूल रूप से Food मुख्य अभिभावक है और संरचना Food>Drinks>Juice>Organic>Grape Juice है। अब मैंने उन्हें नीचे की तरह श्रेणी तालिका में संग्रहीत कर लिया है:

enter image description here

जैसा कि आप देख सकते हैं कि मेरे पास तत्काल मूल आईडी है जैसे pid। अब मैं इस तालिका से मुख्य श्रेणी Food के अंतर्गत सभी श्रेणी के नाम का चयन कैसे कर सकता हूं? मुझे cat_id 1 दिया जाएगा। तो, मैं इस cat_id का उपयोग टेबल से सभी उप श्रेणियों और उनके बच्चे, उप बच्चे आदि को ट्रैक करने के लिए कैसे कर सकता हूं? एसक्यूएल क्या होगा? क्या कोई मदद कर सकता है? अग्रिम में धन्यवाद।

0
Gamer 22 नवम्बर 2017, 22:16
प्रश्न पूछने से पहले प्रश्न पूछना सीखें। stackoverflow.com/help/how-to-ask
 – 
Eric
22 नवम्बर 2017, 22:39
पीआईडी ​​का डेटा प्रकार क्या है?
 – 
Harshil Doshi
22 नवम्बर 2017, 23:03
पीआईडी ​​​​डेटा प्रकार int @ हर्षिल है
 – 
Gamer
22 नवम्बर 2017, 23:14
फिर food के लिए pid का कोई मान कैसे नहीं है? और अगली मुख्य श्रेणी के लिए pid का मान क्या होगा?
 – 
Harshil Doshi
22 नवम्बर 2017, 23:15
क्षमा करें मेरा बुरा, यह वर्चर में है। भोजन मुख्य माता-पिता है, इसलिए इसका कोई मूल आईडी (पीआईडी) नहीं है।
 – 
Gamer
22 नवम्बर 2017, 23:18

2 जवाब

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

SELECT 
cat_level_1.cat_name AS cat_level_1,
cat_level_2.cat_name AS cat_level_2,
cat_level_3.cat_name AS cat_level_3,
cat_level_4.cat_name AS cat_level_4,
cat_level_5.cat_name AS cat_level_5

FROM your_table AS cat_level_1

JOIN your_table AS cat_level_2
ON cat_level_1.ca_tid = cat_level_2.pid

JOIN your_table AS cat_level_3
ON cat_level_2.ca_tid = cat_level_3.pid

JOIN your_table AS cat_level_4
ON cat_level_3.ca_tid = cat_level_4.pid

JOIN your_table AS cat_level_5
ON cat_level_4.ca_tid = cat_level_5.pid

WHERE cat_level_1.ca_tid = 1
1
whitwhoa 22 नवम्बर 2017, 22:45
आप कैसे जान सकते हैं कि केवल 5 स्तर हैं?
 – 
Harshil Doshi
22 नवम्बर 2017, 22:47
1
मैंने ईमानदारी से इस पर ध्यान नहीं दिया। जब ऑप ने कहा कि संरचना Food>Drinks>Juice>Organic>Grape Juice थी, तो मैंने मान लिया था कि केवल 5 स्तर होंगे। मैं अधिक गतिशील क्वेरी के साथ उत्तर अपडेट करने के बारे में देखूंगा, क्योंकि आपके पास एक अच्छा बिंदु है
 – 
whitwhoa
22 नवम्बर 2017, 22:55
1
मुझे यकीन नहीं है कि आप डेटा के वापस आने की उम्मीद कर रहे हैं या नहीं? साथ ही, क्या संरचना में हमेशा अधिकतम 5 श्रेणियां होंगी? या पेड़ की श्रेणियों की गतिशील संख्या हो सकती है?
 – 
whitwhoa
22 नवम्बर 2017, 23:20

यदि पूरी तालिका उस प्रारूप का सख्ती से पालन करती है जहां नई श्रेणी में ' ' pid है और संपूर्ण पदानुक्रम निरंतरता में संग्रहीत है, तो निम्न क्वेरी किसी भी उपश्रेणियों के लिए काम करेगी:

select 
* from
t
where cat_id >= 1    // Instead of 1, you can put here the passed `cat_id`
and cat_id < (select min(cat_id)
            from t
            where pid = ' ' and cat_id > 1) // Instead of 1, you can put here the passed `cat_id`
;

डेमो के लिए यहां क्लिक करें

0
Harshil Doshi 22 नवम्बर 2017, 23:22
कृपया उपरोक्त उत्तर का प्रयास करें।
 – 
Harshil Doshi
22 नवम्बर 2017, 23:27
1
क्या होगा यदि यह 'निरंतरता में संग्रहीत' नहीं है? मेरे उत्तर में आपकी टिप्पणी के बाद से मैं इस पर विचार कर रहा हूं। क्या यह संभव होगा? यदि किसी को यह नहीं पता था कि उप-श्रेणियां कितनी गहराई तक चली गईं और डेटा निरंतरता में संग्रहीत नहीं किया गया ... क्या कोई वांछित डेटासेट प्राप्त करने में सक्षम होगा? मैं वास्तव में इसके बारे में उत्सुक हूं क्योंकि हम अतीत में इस संरचना में भाग चुके हैं, लेकिन हमेशा नए होते हैं कि कितनी उप श्रेणियां थीं। यदि निरंतरता में संग्रहीत नहीं किए जा रहे डेटा के साथ विरासत स्तर को नहीं जानने वाले सीधे एसक्यूएल के साथ उन्हें प्राप्त करने का कोई तरीका है ... यह भविष्य के लिए उपयोगी होगा।
 – 
whitwhoa
22 नवम्बर 2017, 23:27
यदि डेटा निरंतरता में संग्रहीत नहीं किया जाता है तो प्रश्न में दी गई IMMEDIATE pid की पूरी अवधारणा विफल हो जाती है। तो, यह मानने की संभावना है कि प्रश्न के आधार पर निरंतरता में संग्रहीत डेटा।
 – 
Harshil Doshi
22 नवम्बर 2017, 23:31
निःसंदेह वह क्वेरी जो निरंतरता के बिना संग्रहीत उपश्रेणियों की पहचान कर सकती है, वह अधिक सामान्य और अधिक उपयोगी उत्तर होगी, लेकिन यदि डेटा को ऐसी निरंतरता के साथ संग्रहीत किया जाता है, तो यहां कार्य/क्वेरी को जटिल बनाने की कोई आवश्यकता नहीं है।
 – 
Harshil Doshi
22 नवम्बर 2017, 23:35