2010-08-26 6 views
5

चयन मैं डेटा के साथ एक डेटाबेस तालिका है:जिन्हें आप नीचे देख SQL क्वेरी मदद

Primary key | Column1  | Column2   | col3 | col4 |col5 
--------------------------------------------------------------------- 

1   | Chicago Bulls | Michael Jordan | 6'6 | aaaa | cccc 

2   | Chicago Bulls | Scottie Pippen | 6'8 | zzzz | 345 

3   | Utah Jazz  | Malone   | 6'9 | vvvv | xcxc 

4   | Orlando Magic | Hardaway   | 6'7 | xnnn | sdsd 

मैं एक प्रश्न जो स्तंभ 1 में सभी अलग-अलग मान लाने और प्रत्येक स्तंभ 1 मूल्य के लिए Column2 में मानों को संशोधित होगा लिखना चाहते हैं। उदाहरण के लिए: क्वेरी लौट

**Chicago Bulls | Michael Jordan, Scottie Pippen** 

**Utah Jazz  | Malone** 

**Orlando Magic | Hardaway** 

मैं स्तम्भ 1 में सभी अलग-अलग मान लाने के लिए एक प्रश्न लिख सकते हैं, तो कुछ हेरफेर के बाद संलग्न स्तंभ 2 प्राप्त करने के लिए प्रत्येक विशिष्ट मूल्य से अधिक पुनरावृति करना चाहिए। क्या केवल एक प्रश्न में पूरी नौकरी करना संभव है? कृपया एक प्रश्न के उदाहरण के साथ मदद करें। धन्यवाद।

+0

आप किस डीएमबीएस का उपयोग कर रहे हैं? –

+0

वास्तव में यहां विभिन्न आरडीबीएमएस में इसे सुलझाने के लिए दृष्टिकोणों का एक व्यापक व्यापक सेट है - संभवतः डुप्लिकेट [मैं एक क्वेरी क्वेरी का उपयोग कर अल्पविराम से अलग सूची कैसे बना सकता हूं?] (Http://stackoverflow.com/questions/1817985/how-do-i-create-a-अल्पविराम से अलग-सूची-उपयोग-ए-एसक्यूएल-क्वेरी) –

+0

जावा डर्बी का उपयोग कर रहा है ... – Fishinastorm

उत्तर

5

आप MySQL

select Column1, group_concat(Column2) 
from t 
group by Column1  
+0

यह ओपी को अंतिम परिणाम नहीं देता है जिसे वह ढूंढ रहा है। – Dutchie432

+0

@ डची - क्यों नहीं? मुझे सही लगता है। –

+0

आप जानते हैं क्या? मैं आपके समाधान को गलत पढ़ता हूं। "Group_concat" को अधिक सटीक रूप से याद किया गया ... डाउन-वोट अप-वोट में बदल गया। मेरी गलती। – Dutchie432

2

उपयोग कर रहे हैं आप एसक्यूएल सर्वर उपयोग कर रहे हैं:

SELECT Column1, 
stuff((
    SELECT ', ' + Column2 
    FROM tableName as t1 
    where t1.Column1 = t2.Column1 
    FOR XML PATH('') 
    ), 1, 2, '') 
FROM tableName as t2 
GROUP BY Column1 
नहीं

यकीन है कि क्यों माइक्रोसॉफ्ट यह एक बहुत मुश्किल है, लेकिन के रूप में तक मुझे पता है यह केवल है SQL सर्वर में ऐसा करने के लिए विधि ...

एक तरफ ध्यान दें कि आप कॉलम 1 को लुकअप टेबल में बदलने पर विचार कर सकते हैं या अगली बार यूटा चाल आपको जीवन से नफरत करने जा रहे हैं;)

+0

+1 मुझे लगता है कि SQL सर्वर में यह सबसे अच्छी विधि है [अन्य संभावनाएं] (http://www.projectdmx.com/tsql/rowconcatenate.aspx) हालांकि लेकिन कुशल नहीं है और ऑर्डरिंग की गारंटी नहीं देती है। इसके अलावा आप [यहां] (http://sqlblogcasts.com/blogs/tonyrogerson/archive/2006/07/06/871.aspx) को विशेष XML वर्णों से बचने के रोकने के लिए देख सकते हैं –

+1

उद्घोषक: "और खेलना शिकागो बुल्स के लिए शूटिंग गार्ड हमारे पास > & < पूर्व में माइकल जॉर्डन के रूप में जाना जाता है !!! " (भीड़ जंगली हो जाती है) –

0

इस प्रकार की समस्या का सामान्य समाधान कुल कार्य ARRAY_AGG() है जो विभिन्न पंक्तियों में मान युक्त एक सरणी देता है, वैकल्पिक रूप से कुछ मानदंडों द्वारा आदेश दिया जाता है। यह फ़ंक्शन SQL मानक के अगले संस्करण के लिए प्रस्तावित किया गया है। GROUP_CONCAT() फ़ंक्शन एक विशेष मामला है जो सरणी को अल्पविराम से अलग स्ट्रिंग में परिवर्तित करता है।

ARRAY_AGG() और GROUP_CONCAT() दोनों नवीनतम HSQLDB 2.0.1 द्वारा समर्थित हैं। http://hsqldb.org/doc/2.0/guide/dataaccess-chapt.html#N12312

+0

टिप्पणियों से यह पता चला कि ओपी वास्तव में "जावा डर्बी" –

+0

का उपयोग कर रहा है, इस पोस्ट में इसका उल्लेख नहीं किया गया था। डर्बी में अभी तक यह क्षमता नहीं है। इसलिए उत्तर अगर वह चाहें तो उसे वैकल्पिक विकल्प चुनने में मदद कर सकता है। – fredt

0

एसक्यूएल कहीं भी इस उद्देश्य के लिए दस वर्षों से अधिक समय से list() aggregation फ़ंक्शन है।

यदि आप SQL सर्वर का उपयोग कर रहे हैं, तो कुछ हद तक एक्सएमएल का दुरुपयोग करने वाले मुश्किल समाधान के अलावा, आप किसी भी .net भाषा में अपना स्वयं का एकत्रीकरण फ़ंक्शन लिख सकते हैं। और Microsoft documentation of this feature एक उदाहरण के रूप में स्ट्रिंग concatenation के मामले का बिल्कुल उपयोग करता है।

+0

टिप्पणियों से यह पता चला कि ओपी वास्तव में "जावा डर्बी" –

+0

का उपयोग कर रहा है ओह, जब मैंने अपना जवाब लिखा था तो एसक्यूएल-सर्वर टैग के रूप में था। – Frank

संबंधित मुद्दे