1

我有下表:

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函数?

4

2 回答 2

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'
于 2011-11-22T13:54:50.377 回答
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'
于 2011-11-22T08:43:19.387 回答