2016-08-12 16 views
1

これがどのように設計されているかわからない場合は、わかりません。私はInvoicesテーブルに戻るために製品テーブルから顧客名を取得しようとしているので、私は顧客名でグループ化された合計を合計することができます。請求書テーブルには一意の文書IDとIDが1つあります。私は各請求書の名前が必要です。商品テーブルには、顧客名(請求書の明細ごとに1つ)を含む多くのレコードがあります。2番目のテーブルの値を一度取得するためのsqlクエリ

Iは、2つのテーブルでのSQLiteデータベース(orders.sqlite)を有する:

  • 請求書:ID、DOCUMENT_ID、合計、DATE_CREATED、
  • 製品DATE_MODIFIED:ID、invoice_id、CUSTOMER_NAME、のcreated_at、
  • updated_atのを

各顧客のすべての請求書の合計額を取得する必要があります。各請求書の顧客名を検索し、その後、請求書の合計を合計しようとしている

Invoices ID | DOCUMENT_ID | TOTAL | CREATED_AT | UPDATED_AT 25 | 17220 | 0.01 | 2016-08-06 23:13:43 | 2016-08-06 23:13:43 26 | 17214 | 12.95 | 2016-08-06 23:23:23 | 2016-08-06 23:23:23 27 | 17215 | 665.25 | 2016-08-06 23:23:23 | 2016-08-06 23:23:23 28 | 17216 | 445.20 | 2016-08-06 23:23:24 | 2016-08-06 23:23:24 29 | 17217 | 250.80 | 2016-08-06 23:23:25 | 2016-08-06 23:23:25 30 | 17225 | 250.80 | 2016-08-06 23:23:25 | 2016-08-06 23:23:25

Products ID | INVOICE_ID | CUSTOMER_NAME | CREATED_AT | UPDATED_AT 93 | 25 | customer1 | 2016-08-06 23:13:43 | 2016-08-06 23:13:43 94 | 26 | customer2 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 95 | 27 | customer3 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 96 | 27 | customer3 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 97 | 27 | customer3 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 98 | 27 | customer3 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 99 | 28 | customer4 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 100 | 28 | customer4 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 101 | 28 | customer4 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 102 | 29 | customer4 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27 102 | 30 | customer3 | 2016-08-06 23:23:27 | 2016-08-06 23:23:27

イム:テーブルは次のようになります。

ID | DOCUMENT_ID | CUSTOMER_NAME | TOTAL | CREATED_AT | UPDATED_AT 25 | 17220 | custom1 | 0.01 | 2016-08-06 23:13:43 | 2016-08-06 23:13:43 26 | 17214 | custom2 | 12.95 | 2016-08-06 23:23:23 | 2016-08-06 23:23:23 27 | 17215 | custom3 | 665.25 | 2016-08-06 23:23:23 | 2016-08-06 23:23:23 28 | 17216 | custom4 | 445.20 | 2016-08-06 23:23:24 | 2016-08-06 23:23:24 29 | 17217 | custom4 | 250.80 | 2016-08-06 23:23:25 | 2016-08-06 23:23:25 30 | 17225 | custom3 | 250.80 | 2016-08-06 23:23:25 | 2016-08-06 23:23:25

最後のステップは、各顧客のためにすべての請求書を合計することです。したがって、最終的な結果Imを探していると、このようなものになります(一致する顧客の合計を追加する)。ここで

CUSTOMER_NAME |TOTAL custom1 | 0.01 custom2 | 12.95 custom3 | 916.05 custom4 | 696.00

答えて

2

一つの選択肢である:

SELECT t1.CUSTOMER_NAME, 
     SUM(COALESCE(t2.TOTAL, 0)) AS TOTAL 
FROM 
( 
    SELECT DISTINCT INVOICE_ID, CUSTOMER_NAME 
    FROM Products 
) t1 
LEFT JOIN Invoices t2 
    ON t1.INVOICE_ID = t2.ID 
GROUP BY t1.CUSTOMER_NAME 
ORDER BY t1.CUSTOMER_NAME 

ここにデモ:あなたはこれを試すことができ

SQLFiddle

0

、最初の結果は

を設定

フォート第2結果セット:

SELECT p.customer_name, SUM(i.total) total 
FROM invoices i 
INNER JOIN (SELECT DISTINCT invoice_id, 
      customer_name FROM products) p ON p.invoice_id = i.id 
GROUP BY p.customer_name 
関連する問題