2015-03-02 75 views
2

這是例子如何使用Postgres執行以下查詢?

banzai=# select letter_id, length_id, word from words; 
letter_id | length_id | word 
-----------+-----------+------- 
     1 |   1 | run 
     3 |   1 | tea 
     2 |   1 | cat 
     2 |   2 | cast 
     2 |   3 | coast 
     1 |   3 | roast 
     1 |   2 | rest 
     3 |   2 | team 
     3 |   3 | toast 
(9 rows) 

banzai=# select letter from letters; 
letter 
-------- 
R 
C 
T 
(3 rows) 


banzai=# select length from lengths; 
length 
-------- 
     4 
     5 
     3 
(3 rows) 

banzai=# select length, letter, word from words, lengths, letters where words.length_id = lengths.id and words.letter_id = letters.id; 
length | letter | word 
--------+--------+------- 
     3 | C  | cat 
     3 | R  | run 
     3 | T  | tea 
     4 | R  | rest 
     4 | C  | cast 
     4 | T  | team 
     5 | R  | roast 
     5 | C  | coast 
     5 | T  | toast 
(9 rows) 

我想下表產生HTML

 R  T  C 
3  run  tea  cat 
4  rest team  cast 
5  roast toast coast 

我在我的Java將在JSON產生的數據(後端)代碼的方法。 Angularjs(前端)將採取JSON並根據需要JSON這將返回一個對象呈現表中的HTML

+0

尋找動態支點 – JoeNahmias 2015-03-02 23:07:13

+0

謝謝我現在就要! – nevermind 2015-03-02 23:22:48

回答

1

select json_object_agg(length, o) 
from (
    select length, json_object_agg(letter, word) as o 
    from 
     words w 
     inner join 
     lengths l on w.length_id = l.id 
     inner join 
     letters t on w.letter_id = t.id 
    group by length 
) s; 
                     json_object_agg                   
---------------------------------------------------------------------------------------------------------------------------------------------------------------- 
{ "4" : { "R" : "rest", "C" : "cast", "T" : "team" }, "5" : { "R" : "roast", "C" : "coast", "T" : "toast" }, "3" : { "C" : "cat", "R" : "run", "T" : "tea" } } 

以上查詢是9.4。在9.3中有點難度,但也可以做到。

相關問題