मुझे कोई प्रश्न करने का प्रयास करने में कुछ समस्याएं आ रही हैं। मेरे पास दो टेबल हैं, एक तत्व की जानकारी के साथ, और दूसरी तालिका के तत्वों से संबंधित रिकॉर्ड के साथ एक और। विचार तत्व जानकारी और कई रिकॉर्ड जानकारी के समान पंक्ति में प्राप्त करना है।सबक्वायरी का पुन: उपयोग करना संभव है?
संरचना हो सकता है इस तरह की व्याख्या:
table [ id, name ]
[1, '1'], [2, '2']
table2 [ id, type, value ]
[1, 1, '2009-12-02']
[1, 2, '2010-01-03']
[1, 4, '2010-01-03']
[2, 1, '2010-01-02']
[2, 2, '2010-01-02']
[2, 2, '2010-01-03']
[2, 3, '2010-01-07']
[2, 4, '2010-01-07']
और यह मैं प्राप्त करने के लिए चाहते हैं चाहते हैं:
result [id, name, Column1, Column2, Column3, Column4]
[1, '1', '2009-12-02', '2010-01-03', , '2010-01-03']
[2, '2', '2010-01-02', '2010-01-02', '2010-01-07', '2010-01-07']
निम्न क्वेरी उचित परिणाम हो जाता है, लेकिन यह मुझे बेहद अक्षम करने लगता है , प्रत्येक कॉलम के लिए table2 पुनरावृत्त करने के लिए। वैसे भी एक सबक्वायरी करने और इसे पुन: उपयोग करने के लिए संभव होगा?
SELECT
a.id,
a.name,
(select min(value) from table2 t where t.id = subquery.id and t.type = 1 group by t.type) as Column1,
(select min(value) from table2 t where t.id = subquery.id and t.type = 2 group by t.type) as Column2,
(select min(value) from table2 t where t.id = subquery.id and t.type = 3 group by t.type) as Column3,
(select min(value) from table2 t where t.id = subquery.id and t.type = 4 group by t.type) as Column4
FROM
(SELECT distinct id
FROM table2 t
WHERE (t.type in (1, 2, 3, 4))
AND t.value between '2010-01-01' and '2010-01-07') as subquery
LEFT JOIN table a ON a.id = subquery.id
क्या डेटाबेस इस पर है? और डेटाबेस का कौन सा संस्करण (उदाहरण के लिए एसक्यूएल सर्वर 2000, 2005 या 2008?) –
संभावित डुप्लिकेट [एसक्यूएल में उप क्वेरी का पुन: उपयोग कैसे करें?] (Http://stackoverflow.com/questions/14987317/how-to-reuse -एक-उप क्वेरी में एसक्यूएल) –