0

これはDBの例です

table "Users"
fname | lname | id | email 
Joe   | smith | 1  | yadda@goo.com
Bob   | smith | 2  | bob@goo.com
Jane  | smith | 3  | jane@goo.com

table "Awards"
userId | award 
1      | bigaward
1      | smallaward
1      | thisaward
2      | thataward

table "Invites"
userId | invited
1      | true
3      | true

基本的に、次のようなものを作成できるクエリを PostgreSQL でどのように作成しますか。

[{
     fname:"Joe",
     lname:"Smith",
     id: 1,
     email: "yadda@goo.com",
     invited: true,
     awards: ["bigaward", "smallaward", "thisaward"]
 },
 {
     fname:"Jane",
     lname:"Smith",
     id: 3,
     email: "jane@goo.com",
     invited: true,
     awards: []
 }]

これが私がやろうとしていることです...

SELECT users.fname, users.lname, users.id, users.email, invites.invited, awards.award(needs to be an array)
FROM users
JOIN awards on ....(unknown)
JOIN invites on invites.userid = users.id
WHERE invited = true

上記の配列は目的の出力になりますが、適切なワンショットクエリを見つけることができません。PostgreSQL のドキュメントを試しましたが、役に立ちませんでした。WITHステートメントが必要かもしれませんか?

事前に感謝します、Postgres グル!

PostgreSQL v. 9.2

postgresql IRC で RhodiumToad が回答しました:

SELECT users.fname, users.lname, .... array(select awards.award from awards where a.id = user.id) as awards
FROM users
JOIN invites on invites.userid = users.id
WHERE invited = true

array() 次に、その中のクエリを介して...素晴らしい!

4

2 に答える 2

0

データベースを反復処理するには、hasNext または forEach (または同様の) メソッドを使用する必要があります。繰り返している間に、結果を配列に追加し、その配列を JSON にエンコードできます。

私はあなたの質問を誤解したかもしれないと思います。お詫び

于 2013-07-22T23:07:30.307 に答える