Ich habe eine PSQL-Abfrage, wo der AND-Parameter in der linken beitreten in einer anderen Tabelle Prüftabelle Beispiel unten.LINKS Verbinden Sie PSQL, wo der AND-Parameter in einer anderen Tabelle ist
Rechnungen
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
Es gibt auch eine andere Tabelle PRODUCTS aber die einzige relevante Feld dort id
ist dies ist meine Abfrage
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;
Die Abfrage, die ich ausführen soll, besteht darin, alle Produkt-IDs aufzulisten, und in der Spalte total_revenue die Summe der Verkäufe für das Produkt (add 'menu' in der Tabelle bill_items, wo das Feld 'product' ähnlich ist) für den aktuellen Tag (gefunden auf Rechnungen Tabelle). Aber wenn ich diese Abfrage ausführe, listet sie alle total_ounts für die Produkte auf. Was vermisse ich?
Probenausgang. 8, 6 und 11 müssen
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 |
Was meinst du mit _8, 6 und 11 muss leer sein. Da Sie 'und' für das Datum im' left join' haben, werden die Produkte hinzugefügt, die nicht übereinstimmen. Wenn Sie Ihre Anfrage betrachten, sollte sogar ein innerer Join ausreichen, wenn Sie nur die Einnahmen für Produkte wünschen, für die eine Rechnung vorliegt. – Neeraj