2011-04-13 17 views
6

मैं की तरह एक मेज है कहो तोPostgreSQL आत्म में शामिल होने

id |  device  | cmd | value | 
------+----------------+-------+--------- 

id = unique row ID 
device = device identifier (mac address) 
cmd = some arbitrary command 
value = value of corresponding command 

मैं किसी भी तरह स्वयं एक विशेष डिवाइस के लिए विशिष्ट cmds उनके संबंधित मान हड़पने के लिए इस तालिका पर शामिल होने के लिए करना चाहते हैं।

मैं नहीं चाहता कि सिर्फ SELECT cmd,value FROM table WHERE device='00:11:22:33:44:55';

मूल्यों मैं चाहता हूँ getname और getlocation आदेशों के अनुरूप बोलें। मैं आउटपुट कुछ

 mac   | name | location 
--------------------+-----------+------------ 
00:11:22:33:44:55 | some name | somewhere 

मेरा एसक्यूएल फू सुंदर पैंट है। मैं SELECT a.value,b.value FROM table AS a INNER JOIN table AS b ON a.device=b.device जैसे विभिन्न संयोजनों की कोशिश कर रहा हूं लेकिन मुझे कहीं भी नहीं मिल रहा है।

किसी भी मदद के लिए धन्यवाद।

उत्तर

6
SELECT a.value AS thisval ,b.value AS thatval 
FROM table AS a JOIN table AS b USING (device) 
WHERE a.command='this' AND b.command='that'; 
+0

इसके लिए धन्यवाद। मुझे लगता है कि अगर मैं दो के बजाय चार मूल्य चाहता था, तो मुझे तीन जॉइन की आवश्यकता होगी? – tbh1

+0

हां, लेकिन हो सकता है कि आप अपने डेटाबेस संरचना पर पुनर्विचार करना चाहते हैं यदि यह महत्वपूर्ण है ;-) –

+0

समूह का उपयोग करने और चयन सूची में उन्हें क्रमबद्ध करने की एक और संभावना होगी। –

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