sql - Selecting table of properties as columns -
मेरे पास दो टेबल हैं, मैं मैं इसके अलावा, मैं विशेष रूप से सिर्फ तीन स्तंभों के लिए: या अतिरिक्त मॉड्यूल प्रकारों से मिलान करना होगा। विस्तृत विवरणः ए पूरी तरह से कॉलम की डायनेमिक सूची एकल क्वेरी में प्राप्त नहीं की जा सकती। मैंने कई बार कोशिश की है हो सकता है किया गया है: चीजें और
properties :
टेबल चीजें बनाएं (आईडी श्रेय प्राथमिक कुंजी); सारणी गुण (thing_id INT, कुंजी पाठ, मूल्य पाठ) बनाएँ;
वस्तुएं से चयन करना चाहता हूं और कॉलम के रूप में
properties से पंक्तियों में शामिल होना चाहता हूँ। उदाहरण के लिए, मान लें कि मेरे पास निम्न है:
INFACT चीजें DEFAULT_VALUES; मान लीजिए आईडी 1 संपत्तियों (चीज_आईडी, कुंजी, मान) मूल्यों (1, 'ऊंचाई', '5'), (1, 'चौड़ाई', '6'), (1, 'लंबाई', '7 ');
ऊंचाई ,
चौड़ाई , और
लंबाई के रूप में स्तंभों के रूप में किस प्रकार से चुन सकता / सकती हूं?
ऊंचाई ,
width , और
लंबाई का चयन नहीं करना चाहता,
SELECT t.thing_id, max (CASE जब p.key = 'height' तब p.value END) ऊंचाई के रूप में, अधिकतम (मामला जब p.key = 'width' THEN p.value END) के रूप में चौड़ाई, अधिकतम ( मामले में जब p.key = 'लंबाई' तब पी .value END) चीजों से लम्बाई के रूप में, पी। पर कुछ गुण जोड़ पी .thing_id = t.id WHERE t.id = 1 GROUP BY 1;
tablefunc से
crosstab () का उपयोग करें जो विशेष रूप से तेज और विशेषताओं की लंबी सूचियों के लिए कम है:
चयन करें * crosstab से ('SELECT t.thing_id, p.key, p.value से चीजें कम से कम जोड़ पी गुणों p.thing_id = t.id WHERE t.id = 1 आदेश 1 ', $ $ मूल्य (' ऊंचाई ':: पाठ), (' चौड़ाई '), (' लम्बाई ') $ $) - अधिक सीटी (चीज_आईड int, ऊंचाई int, चौड़ाई int, लंबाई int) जोड़ें; - अधिक जोड़ें
Comments
Post a Comment