를 쿼리하는 방법을 배열의 대화는 두서없

0

질문

나는 테이블(주)과 jsonb[] 열 이름 steps 에 Postgres db.

내가 필요로 생성 SQL 쿼리를 레코드를 선택하는 1 단계와 2 단계와 3 단계는 성공 상태

[
 {
  "step_name"=>"Step1",
  "status"=>"success",
  "timestamp"=>1636120240
  },
 {
  "step_name"=>"Step2",
  "status"=>"success",
  "timestamp"=>1636120275
 },
 {
  "step_name"=>"Step3",
  "status"=>"success",
  "timestamp"=>1636120279
 },
 {
  "step_name"=>"Step4", 
  "timestamp"=>1636120236
  "status"=>"success"
  }
]

테이블 구조 id|name|계(대화는 두서없이)

arrays jsonb postgresql sql
2021-11-18 10:35:40
2

최고의 응답

1

'정상화' steps 목록으로 JSON 항목 및 여부를 확인마 "status":"success". BTW 의 예에는 유효하지 않 JSON. 모든 => 로 대체해야 합 : 과 쉼표가 없습니다.

select id, name from orders
where
(
 select bool_and(j->>'status' = 'success') 
 from jsonb_array_elements(steps) j
 where j->>'step_name' in ('Step1','Step2','Step3') -- if not all steps but only these are needed
);
2021-11-18 13:18:38

우리는 쿼리를 사용 가진 경우 그 다음...최종 절? 예합니다. 면 단계 1','2','3 단계는'성공은 주문은"Devilered"상태
Timothy94

Yes,확실합니다. 몇 가지 옵션이 있습니다. 내가 노력하고 그러나를 쿼리로 선언적으로 가능한 하드코딩을 하는의 세부사항. 그러나 이 문제는 개인의 맛이다.
Stefanov.sm
0

당신이 사용할 수 있습 JSON 값을 포함 작업에 대한 확인 상태가 존재하지 않나

데모

select
  *
from
  test
where
  steps @> '[{"step_name":"Step1","status":"success"},{"step_name":"Step2","status":"success"},{"step_name":"Step3","status":"success"}]'
2021-11-18 13:00:24

어떤 경우의 단계를 알 수 없 upfront?
Stefanov.sm

다른 언어로

이 페이지는 다른 언어로되어 있습니다

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................