2011-04-13 3 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';

をしたくない

は、私が欲しいの値はgetnamegetlocationコマンドに対応して言います。

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

My sql fuはかなりズボンです。私は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

ありがとうございます。 2つではなく4つの値が必要な場合は、3つのJOINが必要ですか? – tbh1

+0

はい、ただし、重要である場合はデータベース構造を再検討したいかもしれません; –

+0

別の可能性は、group byを使用して選択リストで並べ替えることです。 –