2013-03-03 7 views
11

मैं कर रहा हूँ शायद इस पल में बातें बहुत स्पष्ट नहीं देख में तालिका की बारी है, लेकिन मुझे लगता है जो इस तरह दिखता है MySQL में एक मेज है: (MySQL - अलग मेज

ID | a | b | c 
1 | a1 | b1 | c1 
2 | a2 | b2 | c2 

किसी कारण से वास्तव में एक पर शामिल होने के एक और तालिका - ID पर आधारित है, लेकिन मुझे लगता है अगर किसी को इस हिस्से के साथ मेरी मदद कर सकते हैं, मैं बाकी अपने आप को) कर सकते हैं, मैं इस के बजाय की तरह बनना उन पंक्तियों की जरूरत:

1 | a1 | a 
1 | b1 | b 
1 | c1 | c 
2 | a2 | a 
2 | b2 | b 
2 | c2 | c 

तो मूल रूप से, मैं की जरूरत है पंक्तियों को देखने के लिए: ID, columntitle, value क्या यह आसानी से करने का कोई तरीका है?

+0

क्या आपका मतलब है 'आईडी, मूल्य, columntitle':

यह भी का उपयोग कर एक CROSS JOIN किया जा सकता है? –

+0

हां, लेकिन ऑर्डर इतना मायने नहीं रखता है, जब तक पंक्तियां आईडी हैं - कॉलम शीर्षक - मान – user2128539

उत्तर

3

UNION ALL का उपयोग करने का प्रयास करें।

SELECT ID, a, 'a' 
FROM tbl 
WHERE ID = 1 
UNION 
SELECT ID, b, 'b' 
FROM tbl 
WHERE ID = 2 
17

आप unpivot डेटा करने की कोशिश कर रहे हैं। MySQL एक unpivot समारोह नहीं है, तो आप एक UNION ALL क्वेरी का उपयोग करने के लिए पंक्तियों में कॉलम परिवर्तित करना होगा:

select id, 'a' col, a value 
from yourtable 
union all 
select id, 'b' col, b value 
from yourtable 
union all 
select id, 'c' col, c value 
from yourtable 

SQL Fiddle with Demo देखें।

select t.id, 
    c.col, 
    case c.col 
    when 'a' then a 
    when 'b' then b 
    when 'c' then c 
    end as data 
from yourtable t 
cross join 
(
    select 'a' as col 
    union all select 'b' 
    union all select 'c' 
) c 

देखें SQL Fiddle with Demo

+1

धन्यवाद। तो ऐसा लगता है कि सभी के बाद एक असली छोटा रास्ता नहीं था (यह काफी कॉलम है, मैंने सोचा था कि प्रत्येक कॉलम के लिए 'चयन ... से ...' से एक आसान तरीका होगा। – user2128539

+0

@ user2128539 मेरा संपादन देखें , मैंने डेटा को अनपिव करने के लिए एक अलग तरीका शामिल किया। – Taryn

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