SQL und Query-Builder

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
qwertz
Beiträge: 39
Registriert: Fr Jan 25, 2013 4:06 pm

SQL und Query-Builder

Beitrag von qwertz »

Ich arbeite mich gerade neu in AvERP ein und wollte den Query-Builder ausprobieren, da ich SQL nicht perfekt beherrsche.

Mein Ziel: Eine Statistik über die Anzahl der bisher verkauften Produkte einer bestimmten Bezeichnung an eine bestimmte Kundengruppe in einem bestimmten Zeitraum. Die Kundengruppe ist über BADRINFO als Gruppe 1 markiert, die Artikelgruppe leider bisher nur über "Bez.".

Ich habe es zunächst direkt über ein Skript versucht, scheine da aber wichtige Parameter zu übersehen oder falsche IDs gewählt zu haben, denn ich bekomme nie das gewünschte Ergebnis (es fehlen etliche Einträge). Falls mir da jemand direkt helfen kann, hier das Skript:

Code: Alles auswählen

select 
    C.MASKENKEY as "Artikel Nr.", 
    C.ARTBEZ as "Artikel Bez.", 
    C.ARTBEZ2 as "Artikel Bez. 2",
    SUM(A.MENGE) as "Anzahl"
from BRRCP A
     left outer join BSA C on C.ID = A.BSA_ID_ARTNR
     left outer join BADR B on B.ID = A.BKUNDE_ID
     left outer join BRRC D on D.ID = A.BRRC_ID_RGNR
     left outer join BADRINFO E on B.ID = E.BADR_ID_LINKKEY
where (C.ARTBEZ starting with 'target')  and
      (BKUNDENFOK_ID = 1) 
group by C.MASKENKEY, C.ARTBEZ, C.ARTBEZ2
order by C.MASKENKEY, C.ARTBEZ, C.ARTBEZ2 desc
Das gibt mir wie gesagt nur einen Teil der gewünschten Ergebnisse.

Mein zweiter Ansatz war dann, den QueryBuilder zu verwenden. Leider auch erfolglos.
Ich habe alle oben erwähnten Felder ausgewählt, meine sum-Funktion und die Suchbedingungen eingegeben und markiert, was angezeigt werden soll.
Das Problem liegt im Verbinden der Tabellen.

Wenn ich BRRCP als Haupttabelle wähle, kann ich sie mit BRRC und BSA verbinden, aber danach ist Schluss. Ich kann weder BADR mit BADRINFO verbinden noch BRRCP mit BADR. "Verbindungsfelder suchen" gibt keine Treffer, "Alle Möglichkeiten anzeigen" hingegen gibt mir Optionen wie z.B. "V_BRRCP.BRLS_ID_LSNR = V_BRLS.ID", was nichts mit den zu verbindenden Tabellen in "Von Tabelle" und "Zu Tabelle" zu tun hat.

Wo ist der Denkfehler? Gibt es tatsächlich keine Verbindung zwischen BRRCP und BADR (wenn ja, welcher Umweg ist der Sinnvollste?)? Kann ich nur Verbindungen mit der Haupttabelle, in diesem Fall BRRCP, eingeben und keine zwischen BADR und BADRINFO? Was habe ich übersehen?

Für einen Hinweis zu Skript oder QueryBuilder wäre ich dankbar.
SYN42
Beiträge: 99
Registriert: Mo Mär 05, 2012 1:58 pm

Beitrag von SYN42 »

Guten Tag!

Die richtige Abhängigkeit für Ihre Frage bezüglich der Verbindung von BRRCP und BADR wäre folgendermaßen:

Code: Alles auswählen

BRRCP.BRRC_ID_RGNR = BRRC.ID (Rechnungsposition ist verknüpft mit Rechnung)
BBRC.BADR_ID_RADRCODE = BADR.ID (Rechnung ist verknüpft mit Adresse)
BADR.ID = BADRINFO.BADR_ID_LINKKEY (Adresse ist verknüpft mit Adressinformation)
Der korrekte SQL-Code für Ihre gewünscht Statistik wäre der Folgende:

Code: Alles auswählen

SELECT C.MASKENKEY as "Artikel Nr.", 
       C.ARTBEZ as "Artikel Bez.",
       C.ARTBEZ2 as "Artikel Bez. 2",
       SUM(A.MENGE_LAG) as "Anzahl"
FROM BRRC B
LEFT OUTER JOIN BRRCP A ON B.ID = A.BRRC_ID_RGNR
LEFT OUTER JOIN BSA C ON A.BSA_ID_ARTNR = C.ID
LEFT OUTER JOIN BADRINFO D ON B.BADR_ID_RADRCODE = D.BADR_ID_LINKKEY
WHERE C.ARTBEZ STARTING WITH 'target' AND
      D.BKUNDENFOK_ID = 1 AND
      B.RECHDATUM BETWEEN  :DATUM_VON AND  :DATUM_BIS
GROUP BY C.MASKENKEY, C.ARTBEZ, C.ARTBEZ2 
ORDER BY C.MASKENKEY, C.ARTBEZ, C.ARTBEZ2 DESC
Es wird dann ein Zeitraum abgefragt und es werden alle Rechnungen berücksichtigt, die eine Adressinformation haben, bei der die Kategorie mit der ID 1 hinterlegt ist.

Schöne Grüße
SYN42
qwertz
Beiträge: 39
Registriert: Fr Jan 25, 2013 4:06 pm

Beitrag von qwertz »

Super, jetzt stimmen die Zahlen!
Naja, fast. Probleme habe ich noch mit abweichender Rechnungsadresse, dafür muss ich mir noch etwas überlegen. Aber bis hierher schonmal vielen Dank!
Antworten