2011-07-07 24 views
7

में 2 पंक्तियाँ शामिल हो रहा है निम्न तालिका:एसक्यूएल एक ही मेज

Name Type  Value 
--------------------- 
mike phone 123  
mike address nyc  
bob address nj  
bob phone 333 

मैं इस तरह परिणाम करना चाहते हैं:

name value value 
------------------- 
mike nyc 123 
bob nj  333 

मैं इसे कैसे कर सकता है?

उत्तर

16

इसे स्वयं-शामिल कहा जाता है। चाल उपनाम का उपयोग करना है।

select 
    address.name, 
    address.value as address, 
    phone.value as phone 
from 
    yourtable as address left join 
    yourtable as phone on address.name = phone.name 
where address.type = 'address' and 
     (phone.type is null or phone.type = 'phone') 

क्वेरी मानती है कि प्रत्येक नाम का पता है, लेकिन फोन नंबर वैकल्पिक हैं।

+2

में (लगभग शब्दशः) इस टाइपिंग था जब अपने जवाब में दिखाया गया। – Chad

+0

मुझे बहुत कुछ भी होता है :-) – cdonner

+0

क्या ओरेकल वास्तव में ** कुछ भी शामिल हो सकता है ** ??? – Bitterblue

0

कुछ इस तरह:

SELECT a.name AS name, phone, address 
    FROM (SELECT name, value AS phone FROM mytable WHERE type = "phone") AS a 
    JOIN (SELECT name, value AS address FROM mytable WHERE type = "address") AS b 
    ON(a.name = b.name); 
संबंधित मुद्दे