Hallo
Ich habe eine Bürosoftware mit Firebird DB welche ich eine Abfrage erstellen möchte.
Und zwar benötige ich alle Preise der Artikel von jeder Rechnung welche bezahlt ist.
Nun leider habe ich auch Rechnungen mit mehreren Zahlungseingängen (Teilzahlung oder auch Abschlagsrechnung) und im Ergebnis der Abfrage werden die Artikelpreise für jeden Zahlungseingang der Rechnung einmal ausgegeben. Also bei einer Rechnung mit 5 Artikeln erhalte ich 5 Artikelpreise (GUT). Aber bei einer Rechnung mit 5 Artikeln welche die Rechnung in 2 Teilen bezahlt wurde, erhalte ich 10 Artikelpreise - also doppelt (SCHLECHT).
Wenn man jetzt ein Select Distinct machen könnte welches NUR auf MOV_INVOICES_POSITIONS.ID bezogen ist, wäre es super. Da dies scheinbar nicht möglich ist und durch eine Verschachtelung gemacht werden muss, habe ich Probleme damit. Bin nur gerade so gut einige Schnippels zusammen zu führen oder einfache Abfragen zu machen.
Hier die ganze Abfrage:
SELECT
MOV_INVOICES_POSITIONS.ID,
MOV_INVOICES.INVNO as Rechnungsnummer,
SUP_COSTCATEGORIES.LABEL as Erloesart,
MOV_ORDERS_POSITIONS.TOTALGROSS_AD as ArtikelSumme,
LEFT(MOV_PAYMENTS.PAYDATE,10) as Zahlungsdatum
FROM
MOV_PAYMENTS
LEFT JOIN MOV_INVOICES on MOV_INVOICES.ID = MOV_PAYMENTS.INVID
LEFT JOIN MOV_INVOICES_POSITIONS on MOV_INVOICES_POSITIONS.INVID = MOV_INVOICES.ID
LEFT OUTER JOIN MOV_ORDERS_POSITIONS ON (MOV_INVOICES_POSITIONS.ORDPOSID = MOV_ORDERS_POSITIONS.ID)
LEFT JOIN BAS_ARTICLES on BAS_ARTICLES.ID = MOV_INVOICES_POSITIONS.ARTID
LEFT JOIN SUP_COSTCATEGORIES on SUP_COSTCATEGORIES.ID = BAS_ARTICLES.COST_CATEGORY
WHERE MOV_PAYMENTS.INVID is not null
and BAS_ARTICLES.ARTKIND < 10
and EXTRACT(MONTH FROM MOV_PAYMENTS.PAYDATE) > 6
ORDER BY
MOV_INVOICES_POSITIONS.ID
Kann mir jemand helfen?
Danke schon mal
Ich habe eine Bürosoftware mit Firebird DB welche ich eine Abfrage erstellen möchte.
Und zwar benötige ich alle Preise der Artikel von jeder Rechnung welche bezahlt ist.
Nun leider habe ich auch Rechnungen mit mehreren Zahlungseingängen (Teilzahlung oder auch Abschlagsrechnung) und im Ergebnis der Abfrage werden die Artikelpreise für jeden Zahlungseingang der Rechnung einmal ausgegeben. Also bei einer Rechnung mit 5 Artikeln erhalte ich 5 Artikelpreise (GUT). Aber bei einer Rechnung mit 5 Artikeln welche die Rechnung in 2 Teilen bezahlt wurde, erhalte ich 10 Artikelpreise - also doppelt (SCHLECHT).
Wenn man jetzt ein Select Distinct machen könnte welches NUR auf MOV_INVOICES_POSITIONS.ID bezogen ist, wäre es super. Da dies scheinbar nicht möglich ist und durch eine Verschachtelung gemacht werden muss, habe ich Probleme damit. Bin nur gerade so gut einige Schnippels zusammen zu führen oder einfache Abfragen zu machen.
Hier die ganze Abfrage:
SELECT
MOV_INVOICES_POSITIONS.ID,
MOV_INVOICES.INVNO as Rechnungsnummer,
SUP_COSTCATEGORIES.LABEL as Erloesart,
MOV_ORDERS_POSITIONS.TOTALGROSS_AD as ArtikelSumme,
LEFT(MOV_PAYMENTS.PAYDATE,10) as Zahlungsdatum
FROM
MOV_PAYMENTS
LEFT JOIN MOV_INVOICES on MOV_INVOICES.ID = MOV_PAYMENTS.INVID
LEFT JOIN MOV_INVOICES_POSITIONS on MOV_INVOICES_POSITIONS.INVID = MOV_INVOICES.ID
LEFT OUTER JOIN MOV_ORDERS_POSITIONS ON (MOV_INVOICES_POSITIONS.ORDPOSID = MOV_ORDERS_POSITIONS.ID)
LEFT JOIN BAS_ARTICLES on BAS_ARTICLES.ID = MOV_INVOICES_POSITIONS.ARTID
LEFT JOIN SUP_COSTCATEGORIES on SUP_COSTCATEGORIES.ID = BAS_ARTICLES.COST_CATEGORY
WHERE MOV_PAYMENTS.INVID is not null
and BAS_ARTICLES.ARTKIND < 10
and EXTRACT(MONTH FROM MOV_PAYMENTS.PAYDATE) > 6
ORDER BY
MOV_INVOICES_POSITIONS.ID
Kann mir jemand helfen?
Danke schon mal