Транспонировать запрос в PostgreSQL - PullRequest
1 голос
/ 22 ноября 2011

У меня есть следующая таблица:

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

I 'используя PostgreSQL;какой запрос можно использовать для получения этого вывода?Я тоже использую PHP;есть ли функция PHP, которая может сделать это?

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Вы также можете сделать это с помощью пары 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 голосов
/ 22 ноября 2011
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'
...