0
我已經寫了一個PSQL語句,它返回JSON中的多個表值的數據,輸出幾乎是正確的,但是我需要更深入一層,我不知道該怎麼做。來自postgresql的嵌套array_to_json輸出
聲明如下:
select array_to_json(array_agg(t))
from (
select sensors.name,
(
select array_to_json(array_agg(row_to_json(d)))
from (
select *
from events
where sensors.sensorid=events.sensorid
) d
) as signatures
from sensors
) t
,它輸出以下內容:
[
{
"name":"Boston",
"signatures":[
{
"eventid":1,
"sensorid":1,
"signature":223123,
"srcip":"10.0.0.1",
"dstip":"10.0.0.2",
"srcport":10000,
"dstport":80,
"timestamp":"2016-12-10T07:00:00",
"gid":null
},
{
"eventid":2,
"sensorid":1,
"signature":142142,
"srcip":"10.0.0.1",
"dstip":"10.0.0.2",
"srcport":10000,
"dstport":80,
"timestamp":"2016-12-10T07:00:00",
"gid":null
}
]
},
{
"name":"Greenwich",
"signatures":[
{
"eventid":12,
"sensorid":2,
"signature":123123,
"srcip":"10.0.0.1",
"dstip":"10.0.0.2",
"srcport":10000,
"dstport":80,
"timestamp":"2016-12-10T07:00:00",
"gid":null
},
{
"eventid":13,
"sensorid":2,
"signature":524123,
"srcip":"10.0.0.1",
"dstip":"10.0.0.2",
"srcport":10000,
"dstport":80,
"timestamp":"2016-12-10T07:00:00",
"gid":null
}
]
}
]
這是一個良好的開端,但我也想是進一步層輸出,使個人簽名成爲陣列中的所有發射,所以輸出應該是這樣的:
{
"name":"Boston",
"signatures":[
{
"signature": 223123,
"firings":[
{
"eventid":1,
"sensorid":1,
"signature":223123,
"srcip":"10.0.0.1",
"dstip":"10.0.0.2",
"srcport":10000,
"dstport":80,
"timestamp":"2016-12-10T07:00:00",
"gid":null
}
]
},
{
"signature": 142142,
"firings":[
{
"eventid":1,
"sensorid":1,
"signature":142142,
"srcip":"10.0.0.1",
"dstip":"10.0.0.2",
"srcport":10000,
"dstport":80,
"timestamp":"2016-12-10T07:00:00",
"gid":null
}
]
}
]
},
我試圖做這樣的:
select array_to_json(array_agg(t))
from (
select sensors.name,
(
select array_to_json(array_agg(row_to_json(d)))
from (
select distinct events.signature as signatureid,
(
select array_to_json(array_agg(row_to_json(e)))
from (
select *
from events
where events.signature = signatureid
) e
) as firings
from events
where sensors.sensorid=events.sensorid
) d
) as signatures
from sensors
) t
但Postgres的似乎並不喜歡這樣說:「也許你的意思是引用列‘events.signature’或列‘events.signature’ 「。
任何幫助將不勝感激,謝謝!
嘿,這是尋找偉大的,它完全不是那麼回事,雖然當你添加更多的數據,這不是把每個事件入陣,它的每一次建立一個新的對象:http://rextester.com/ NCZ7287 – Steve
這是一個內部分組標準的問題。請參閱修改後的答案和[本示例](http://rextester.com/INABH8185)。 – klin
你是男人,男人!非常感謝! – Steve