2011-11-22 44 views
1

我有如下表:移调查询PostgreSQL中

tb_item 
id_item | item_name | price 
---------------------------- 
1  | item1  | 2000 
2  | item2  | 3000 
3  | item3  | 4000 

tb_value 
id_value | id_item | value_type | value 
---------------------------------------- 
1  | 1  | bedroom | 2 
2  | 1  | bathroom | 1 
3  | 2  | bedroom | 3 
4  | 2  | bathroom | 1 
5  | 3  | bedroom | 4 
6  | 3  | bathroom | 2 

我想获得类似这样的输出:

item_name | price | bedroom | bathroom 
--------------------------------------- 
item1  | 2000 | 2  | 1 
item2  | 3000 | 3  | 1 
item3  | 4000 | 4  | 2 

我使用PostgreSQL的;什么查询可以用来获得这个输出? 我也使用PHP;有没有一个PHP函数可以做到这一点?

+0

查找 '支点查询'。 –

+0

这是功课吗? –

+0

@JonathanLeffler,我可以直接使用这些功能吗?或者之前需要安装? – Praditha

回答

2

您也可以与一对夫妇完成这个LEFT JOIN声明

SELECT i.item_name 
    , i.price 
    , bed.value AS bedroom 
    , bath.value AS bathroom 
FROM tb_item AS i 
LEFT JOIN tb_value AS bed ON i.id_item = bed.id_item 
    AND bed.value_type = 'bedroom' 
LEFT JOIN tb_value AS bath ON i.id_item = bath.id_item 
    AND bath.value_type = 'bathroom' 
+0

+ 1用于将'JOIN'条件与WHERE过滤条件分开。 –

+0

@ A.H。是的,对不起。我已经更新了它,谢谢你的提醒。 –

+0

非常感谢,我想投你的答案,但我还是不能这样做,:D – Praditha

0
select item_name, price, bedroom.value as bedroom, bathroom.value as bathroom 
from tb_item, tb_value as bedroom, tb_value as bathroom 
where bedroom.id_item=tb_item.id_item and bedroom.value_type='bedroom' 
and bathroom.id_item=tb_item.id_item and bathroom.value_type='bathroom'