1

postgresと通信するphpを使用して、レポート目的でデータをコンパイルしたいのですが、3つのテーブルがあります

製品ステータス:

status_code | value
------------|------
    1       |  a
    2       |  b

product_child :

code| ID | status_code
----|----|------------
 X  |  1 |   1
 X  |  2 |   1
 X  |  3 |   2
 Y  |  1 |   2
 Y  |  2 |   2
 Z  |  1 |   1

product_master :

code|description(and some other columns not relevent)
 X  |    la
 Y  |    alb
 Z  |    lab

最後に、基本的にこのようなテーブルが必要です。これを表示します

    | total child | status a | status b
bla |    3        |  2       |   1
alb |    2        |  0       |   2
lab |    1        |  1       |   0

私が試してみました

SELECT s.value, count(s.value) 
FROM product_child p, product_status s 
WHERE
    p.product_status = s.status_code 
    and p.product_code = get_product_code('Sofa (1-seater) J805') 
group by 
    s.value

特定のコードのグループ化を提供しますが、これを反転して個別のproduct_codesの前に追加したい

4

1 に答える 1

1

このような意味ですか?

select  pm.description,
        count(pc.code) total,
        count(case when ps.value = 'A' then ps.value else null end) statusA,
        count(case when ps.value = 'B' then ps.value else null end) statusB
from    product_master pm join product_child pc on pm.code = pc.code
        join product_status ps on pm.status_code = ps.status_code
group by pm.description
于 2012-07-05T12:04:14.153 に答える