私は使用できるjsonオブジェクトに複数のテーブルを結合しようとしていません。うまくいけば、私は何をしようとしているのか説明することができます。SQLクエリ:複数の値を持つ3つのテーブルを結合する
私は3つのテーブルを持っている:
取引テーブル
ID、クライアント、住所、市、州は、
エージェントテーブル
ID、FIRST_NAME、LAST_NAME
ジップag ent_transaction
ID、agent_idには、ここで
をTRANSACTION_IDそれらはすべて一緒に縛られている方法は次のとおりです。
transactions.id = agent_transaction.transaction_id
agent_transaction.agent_id = agents.id
leトランザクションは複数のエージェントを持つことができます(agent_transactionに挿入されます)。
トランザクションに割り当てられているすべてのエージェントと一緒に各トランザクションのリストを取得し、エージェントの情報を収集します(first_name、last_name、等)。
alltransactions:[{
id: 20
client: Joe Smith
address: 123 Fake Dr
city: Phoenix
state: AZ
zip: 85248
agents:{
agent_id: 39
first_name: John
last_name: Doe
},{
agent_id: 40
first_name: Kelly
last_name: Parker
},{
agent_id: 41
first_name: Carl
last_name: Williams
}
}、{
id: 21
client: Mary Swamson
address: 240 Someplace Dr
city: Seattle
state: WA
zip: 98233
agents:{
agent_id: 12
first_name: Billy
last_name: Banks
},{
agent_id: 98
first_name: Sharon
last_name: Gandt
}
} ]私が使用して試した
だから、それは次のようになりますいくつかの内部結合が、返されたすべてのエージェントに対して重複したトランザクション行を取得します。 STRING_AGG関数を使って、私が探しているものを返すことができると期待しています。私はSTRING_AGGを使用して、それを考え出したと信じて
おかげ
クエリからリテラルJSON出力を取得するには、MySQL(Postgres?)が提供するJSONライブラリを使用する必要があります。結合から見ている複製が必要です。 –
@Tim BiegeleisenありがとうTim。 JSONの出力は私の問題ではない、私はそれを世話することができます。 psqlから簡単なSQLクエリを実行しようとしても、重複したトランザクションが返されています(返される各エージェントごとに1つ)。一意のトランザクションを取得する方法はありますか、エージェント情報を各結果内の配列として並べていますか?私は実際に取引の詳細とそれに割り当てられたすべてのエージェントを知る必要があります。 – TemeCal
postgresqlのSTRING_AGG関数が私の望んだことをするかもしれないと思っています。 – TemeCal