Hier ist meine Probe DB Bedingung gilt:SELECT WHERE subselect SUM
orderID |name |invoiceTotal |packGroup
--------------------------------------
123 |john |5.49 |abc
456 |bill |10.00 |def
789 |bill |10.00 |def
Einige Kunden einen Auftrag haben, irgendein Platz, mehr als nur eine, sondern auf die gleiche Lieferadresse. Der App-Benutzer wird entscheiden, ob Bills zwei Bestellungen zusammen in einem Paket versandt werden sollen. Wenn dies der Fall ist, wird das Feld "packGroup" auf dieselbe eindeutige Zeichenfolge gesetzt.
Jetzt möchte ich Bestellungen auflisten, die dem Benutzer die Möglichkeit geben, eine Preisspanne (und andere Eigenschaften wie Lieferland, Werber usw.) auszuwählen.
So kann ich einfach Folgendes tun, um Aufträge in einer Preisklasse anzuzeigen. Auflistung insgesamt Rechnungsbetrag von 20.
SELECT *
FROM orders
WHERE ...
AND (SELECT SUM(amountTotal)/exchangeRatio
FROM orders o
WHERE packGroup=o.packGroup) > 15
AND (SELECT SUM(amountTotal)/exchangeRatio
FROM orders o
WHERE packGroup=o.packGroup) < 50
GROUP
BY packGroup
Aber ich bekomme 0 Ergebnisse
SELECT *
FROM orders
WHERE ...
AND amountTotal/exchangeRatio > 15
AND amountTotal/exchangeRatio < 50
GROUP
BY packGroup
Jetzt möchte ich nur eine kumuliertes um Bill anzuzeigen. Mein Problem ist nicht, "20" anzuzeigen, aber Bills Aufträge fallen in den Zustand, in dem die Preisspanne zwischen 15 und 50 gilt.
Zur Klarstellung: "exchangeRatio" ist ein anderes Feld in der Tabelle, das sich von 1 unterscheidet, wenn der Auftrag in einer anderen Fremdwährung platziert wurde.
Update: SQLfiddle
Siehe http: // Meta. stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql-query – Strawberry
Danke @Strawberry für den Schnitt, sieht jetzt viel verständlicher aus. :) – Engle
Könnten Sie einen http://sqlfiddle.com/ Eintrag für das Problem erstellen? – Brian