左のANDパラメータが下の別のテーブルチェックテーブルのサンプルに参加するPSQLクエリがあります。LEFT ANDパラメータが別のテーブルにある場合のPSQLに参加する
請求書
id | account | invoice_date | reference | total_amount | status
-----+---------+-------------------------+-----------+--------------+--------
164 | 100 | 2016-08-03 03:05:08.996 | 161 | 2000.00 |
165 | 100 | 2016-08-03 21:42:07.865 | 164 | 0 |
167 | 100 | 2016-08-03 22:56:41.731 | 166 | 100.00 |
168 | 100 | 1970-01-01 00:33:20 | 161 | 200 |
169 | 100 | 2016-08-08 00:00:00 | 161 | 200 |
Invoice_items
id | invoice | invoice_item_type | product | quantity | unit_price | reference | amount
-----+---------+-------------------+---------+----------+------------+-----------+---------
143 | 164 | 1 | 6 | | | 161 | 2000.00
144 | 165 | 1 | 11 | | | 164 | 0
145 | 167 | 1 | 8 | | | 166 | 100.00
もID
がある別のテーブル製品だけで、関連するフィールドがあり、これは私のクエリです
select products.id, sum(invoice_items.amount) as total_revenue
from products
left join invoice_items on invoice_items.product = products.id
left join invoices on invoice_items.invoice = invoices.id
and invoices.invoice_date= current_date
group by products.id;
クエリが必要なのは、すべての商品IDを一覧表示し、total_revenue列に商品の売上の合計を入力します(現在の日の '商品'フィールドが似ているinvoice_itemsテーブルに 'amount'を追加します) INVOICESテーブル)。しかし、このクエリを実行すると、製品のtotal_amountsがすべてリストされます。私は何が欠けていますか?
サンプル出力。 8、6、11は空白にする必要があります。
id | total_revenue
-----+---------------
125 |
154 |
119 |
129 |
8 | 100.00
112 |
5 |
132 |
104 |
113 |
143 |
152 |
121 |
127 |
165 |
139 |
146 |
15 |
2 |
147 |
149 |
166 |
169 |
13 |
106 |
122 |
9 |
11 | 0
110 |
120 |
130 |
155 |
134 |
136 |
101 |
168 |
131 |
157 |
161 |
103 |
150 |
159 |
107 |
108 |
145 |
4 |
12 |
158 |
167 |
138 |
162 |
100 |
156 |
163 |
124 |
123 |
109 |
153 |
102 |
105 |
151 |
116 |
133 |
140 |
160 |
148 |
126 |
141 |
7 |
118 |
10 |
164 |
128 |
14 |
144 |
135 |
1 |
6 | 2000.00
3 |
137 |
117 |
142 |
111 |
_8、6、11は何を意味するのですか? 'left join'の日付に' and'をつけているので、一致しなかった商品を追加します。照会を見ると、請求書を持っている製品の収入のみが必要な場合は、内部結合でも十分です。 – Neeraj