'WITH RECURSIVE'로 총 가격 계산

schw4ndi

나는 테이블 'Leistung'(영어로 활동을 의미)과 주어진 양의 두 활동 사이의 일치 (benoetigt)를위한 테이블을 가지고 있습니다. 예를 들어 ID가 2 인 활동에는 ID가 3 인 활동이 3 개 필요합니다.

각 활동 (leistung)에는 가격이 있습니다.

이제 적절한 금액의 아동 활동 가격을 포함하여 모든 활동 (leistung)의 총 가격을 계산하고 싶습니다.

다음은 일부 테스트 데이터가있는 내 테이블입니다.

CREATE TABLE Leistung (
  lnr INTEGER PRIMARY KEY,
  bezeichnung VARCHAR(100) NOT NULL,
  price NUMERIC(7,2) NOT NULL
);

CREATE TABLE benoetigt (
  lnr INTEGER REFERENCES Leistung(lnr),
  benoetigt_lnr INTEGER REFERENCES Leistung(lnr),
  amount INTEGER NOT NULL,
  PRIMARY KEY (lnr,benoetigt_lnr)
);

INSERT INTO Leistung(lnr, bezeichnung, price) VALUES
  (1, 'Discokugel', 100),
  (2, 'Strobolicht', 100),
  (3, 'Verstärker', 90),
  (4, 'Gelaender',50),
  (5, 'Bühne',50),
  (6, 'Bühnenelement',20),
  (7, 'Stromverteiler', 40),
  (8, 'Stromkabel', 20);

INSERT INTO benoetigt (lnr, benoetigt_lnr, amount) VALUES
  (5,6,12),
  (1,7,1),
  (2,7,1),
  (7,8,1);

솔루션이 'WITH RECURSIV'쿼리에서만 작동한다는 것은 꽤 확신합니다. 내 첫 번째 시도는 다음과 같습니다.

WITH RECURSIVE benoetigtlist(lnr,benoetigt_lnr,menge) AS (
  SELECT lnr, benoetigt_lnr, menge FROM benoetigt
    UNION ALL
  SELECT  b.lnr, b.benoetigt_lnr, b.menge
  FROM benoetigtlist bl, benoetigt b
  WHERE b.lnr = bl.benoetigt_lnr
)
SELECT * FROM benoetigtlist;

그러나 나는이 결과와 활동의 가격 사이를 어떻게 연결할 수 있는지 모르겠습니다.

아니면 이것은 잘못된 시도입니까?

다음은 더 나은 이해를 위해 testdata의 SQL Fiddle입니다. SQL Fiddle

편집 : 원하는 출력은 자녀의 가격을 포함하여 총 가격이 포함 된 모든 활동 목록입니다.

위의 테스트 데이터의 경우 결과는 다음과 같아야합니다.

id  text          price
1  'Discokugel'     160  // 100 + 1*40 + 1*20
2  'Strobolicht'    160  // 100 + 1*40 + 1*20
3  'Verstärker'      90
4  'Gelaender'       50
5  'Bühne'          290  // 50 + 12*20  
6  'Bühnenelement'   20
7  'Stromverteiler'  60  // 40 + 1*20
8  'Stromkabel'      20

예를 들어, ID 5 'Bühne'인 활동의 총 가격은 290입니다. 활동 자체 비용은 50이기 때문입니다. 또한이 활동에는 ID 6 (20 개 비용)의 12 개 활동이 필요합니다 ( 'benoetigt'의 첫 번째 항목에 따라) .

요약하면 : 50 + 12 * 20 = 290

중복 표시된 질문에서 재귀는 하나의 테이블에서만 발생합니다. 하지만 가격 정보가 다른 테이블에 있다는 문제가 있습니다.

user4637357

이제 재귀 적 CTE의 결과를 활동 테이블과 두 번 조인하고 (하나는 부모의 가격을 구하고 다른 조인은 하위 활동의 ​​가격을 구함) 부모 활동별로 그룹화하여 하위 활동의 ​​비용을 요약해야합니다.

WITH RECURSIVE benoetigtlist(lnr,benoetigt_lnr,menge) AS (
  SELECT lnr, benoetigt_lnr, amount 
  FROM benoetigt
    UNION ALL
  SELECT  bl.lnr, b.benoetigt_lnr, b.amount
  FROM benoetigtlist bl
  , benoetigt b
  WHERE b.lnr = bl.benoetigt_lnr
)
SELECT parent.lnr
  , parent.bezeichnung
  -- replace null with 0 if there are no child activities
  , parent.price + COALESCE(children_cost.cost, 0) AS cost
FROM Leistung parent
-- subquery that summarizes total cost of all children:
LEFT JOIN (
  SELECT bl.lnr, SUM(bl.menge * l.price) as cost
  FROM benoetigtlist bl
  INNER JOIN Leistung l on bl.benoetigt_lnr = l.lnr
  GROUP BY bl.lnr
) children_cost ON children_cost.lnr = parent.lnr
ORDER BY parent.lnr

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JS로 총 가격 계산

분류에서Dev

Javascript 총 가격 계산기?

분류에서Dev

Python에서 실행으로 식료품 총 가격 계산

분류에서Dev

React에서 총 가격 계산

분류에서Dev

Rails로 총 주문 가격을 계산하는 방법은 무엇입니까?

분류에서Dev

laravel의 총 가격 합계

분류에서Dev

총 가치 dict 계산

분류에서Dev

소수로 가격 계산

분류에서Dev

ASP.NET의 GridView에서 조각으로 총 가격을 계산하는 방법

분류에서Dev

jQuery를 사용하여 자동으로 총 가치 계산

분류에서Dev

여러 토글 버튼에서 총 가격 계산

분류에서Dev

노드 js 및 mongodb에서 주문 총 가격 계산

분류에서Dev

자바 스크립트는 세금 및 총 가격 계산

분류에서Dev

체크 박스 + 선택 목록에서 총 가격 계산

분류에서Dev

총 주문 가격은 어떻게 계산합니까?

분류에서Dev

Libre Office Calc로 총 급여 계산

분류에서Dev

MYSQL에서 총계를 계산하고 가격 마일스톤을 얻기 위해 여러 조건으로 여러 SUM을 얻고 싶습니다.

분류에서Dev

총액 계산

분류에서Dev

장바구니 합계 및 총 합계에 사용자 지정 계산을 마젠 토로 추가

분류에서Dev

총 주문 가격을 계산하는 방법은 무엇입니까?

분류에서Dev

recyclerview의 항목 목록에있는 항목의 총 가격 계산

분류에서Dev

기타 합계를 기반으로 총 합계 계산 Vanilla JavaScript

분류에서Dev

일일 시계열-R로 총계 계산

분류에서Dev

목록의 모든 고유 값 + 총 수량 및 품목 비용 당 총 가격을 계산합니다.

분류에서Dev

재정의 된 장바구니 가격으로 장바구니 총계가 업데이트되지 않음

분류에서Dev

SQL 별칭을 총계로 계산하는 방법

분류에서Dev

SQL의 총계에 총계 추가

분류에서Dev

EmberJs 총액 계산

분류에서Dev

총 수량 계산

Related 관련 기사

  1. 1

    JS로 총 가격 계산

  2. 2

    Javascript 총 가격 계산기?

  3. 3

    Python에서 실행으로 식료품 총 가격 계산

  4. 4

    React에서 총 가격 계산

  5. 5

    Rails로 총 주문 가격을 계산하는 방법은 무엇입니까?

  6. 6

    laravel의 총 가격 합계

  7. 7

    총 가치 dict 계산

  8. 8

    소수로 가격 계산

  9. 9

    ASP.NET의 GridView에서 조각으로 총 가격을 계산하는 방법

  10. 10

    jQuery를 사용하여 자동으로 총 가치 계산

  11. 11

    여러 토글 버튼에서 총 가격 계산

  12. 12

    노드 js 및 mongodb에서 주문 총 가격 계산

  13. 13

    자바 스크립트는 세금 및 총 가격 계산

  14. 14

    체크 박스 + 선택 목록에서 총 가격 계산

  15. 15

    총 주문 가격은 어떻게 계산합니까?

  16. 16

    Libre Office Calc로 총 급여 계산

  17. 17

    MYSQL에서 총계를 계산하고 가격 마일스톤을 얻기 위해 여러 조건으로 여러 SUM을 얻고 싶습니다.

  18. 18

    총액 계산

  19. 19

    장바구니 합계 및 총 합계에 사용자 지정 계산을 마젠 토로 추가

  20. 20

    총 주문 가격을 계산하는 방법은 무엇입니까?

  21. 21

    recyclerview의 항목 목록에있는 항목의 총 가격 계산

  22. 22

    기타 합계를 기반으로 총 합계 계산 Vanilla JavaScript

  23. 23

    일일 시계열-R로 총계 계산

  24. 24

    목록의 모든 고유 값 + 총 수량 및 품목 비용 당 총 가격을 계산합니다.

  25. 25

    재정의 된 장바구니 가격으로 장바구니 총계가 업데이트되지 않음

  26. 26

    SQL 별칭을 총계로 계산하는 방법

  27. 27

    SQL의 총계에 총계 추가

  28. 28

    EmberJs 총액 계산

  29. 29

    총 수량 계산

뜨겁다태그

보관