2011-04-13 8 views
6

Say Mam tabeli jak takpostgresql własny dołączyć

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

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

Chciałbym jakoś samo dołączyć na tej tabeli, aby chwycić konkretnych CMDS i odpowiadające im wartości dla konkretnego urządzenia.

Nie chcę po prostu SELECT cmd,value FROM table WHERE device='00:11:22:33:44:55';

Say wartości chcę odpowiadać getname i getlocation poleceń. Chciałbym mieć coś w rodzaju:

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

Moje sql fu to ładne spodnie. Próbowałem różnych kombinacji, takich jak SELECT a.value,b.value FROM table AS a INNER JOIN table AS b ON a.device=b.device, ale nigdzie nie dochodzę.

Dzięki za pomoc.

Odpowiedz

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

Dzięki za to. Przypuszczam, że gdybym chciał cztery wartości zamiast dwóch, potrzebowałbym trzech JOIN-ów? – tbh1

+0

Tak, ale może zechcesz ponownie rozważyć strukturę bazy danych, jeśli jest to ważne ;-) –

+0

Inną możliwością jest użycie grupy i posortowanie jej na liście wyboru. –