我试图将多个表组合成一个我可以使用的json对象。希望我可以解释我想要做的事情。
我有3张桌子:
交易表
id,client,address,city,state,zip
座席表
id,first_name,last_name
agent_transaction
id,agent_id,transaction_id
以下是他们的联系方式:
transactions.id = agent_transaction.transaction_id
agent_transaction.agent_id = agents.id
单个事务可以有多个代理(插入agent_transaction)。我希望从SQL查询中获得以下内容:
获取每个事务的列表...以及分配给事务的所有代理...并收集代理信息(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功能,希望这可能会回归我正在寻找的东西。
由于
答案 0 :(得分:0)
我相信我想出来了,使用STRING_AGG:
SELECT t.id,t.address, STRING_AGG(a.first_name, ';') AS agents FROM trans AS t
INNER JOIN agent_trans AS at ON (t.id = at.transaction_id)
INNER JOIN agents AS a ON (a.id = at.user_id)
GROUP BY t.id,t.address
ORDER BY t.id;
我显然需要包括我所有的其他领域,但这似乎是我正在寻找的。 p>