Neu SQL Abfrage in Excel

vk-ecommerce

Neues Mitglied
8. November 2023
13
2
Hallo zusammen.

Ich habe eine Excel Datei mit der folgenden Abfrage:

select Artikelnummer, Artikelname, cHan, Hersteller, EinkaufspreisDurchschnittNetto, VerkaufspreisNetto, VerkaufspreisBrutto, Versandklasse, BestandGesamt from ArtikelVerwaltung.vArtikelliste where nistvarkombivater = 0 and nistvarkombikind = 0 and cistaktiv = 'Y' order by
chan asc

Soweit funktioniert alles. Es werden Alle Artikel, die ich angelegt habe in der Excel angezeigt. Wie muss ich die SQL Abfrage ändern, damit mir nur Artikel aus einer bestimmten Kategorie angezeigt werden?
 

vk-ecommerce

Neues Mitglied
8. November 2023
13
2
Keiner eine Idee? Man müsste doch eigentlich nur einen Join auf die Tabelle mit den Kategorien machen. Nur weiß ich leider nicht, wie der Befehl und der Tabellenname dafür lautet
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.317
366
Die Tabellennamen kannst du hier ermittteln: https://wawi-db.jtl-software.de/
Ich kann dir leider nicht sagen, welche Tabellen du verknüpfen musst, da ich nicht weiß, welche Wawi Version du hast.

Logische Verknüpfungen mehrerer Tabellen machst du dann wie du schon selbst rausgefunden hast mit JOIN
Es gibt verschiedene JOIN Typen, die sich jeweils darin unterscheiden, welche Zeilen zurückgegeben werden wenn die Bedingung erfüllt bzw. nicht erfüllt ist: (INNER, LEFT, RIGHT, FULL, CROSS)
https://learn.microsoft.com/de-de/sql/relational-databases/performance/joins

Deine Abfrage sollte dann irgendwie wie folgt aussehen:
SELECT ... FROM Tabelle1 JOIN Tabelle2 ON Bedingung ..........

Wenn du die Abfrage im Bezug auf deine Version erstellt hast und dann eine konkrete Frage aufkommt, kann dir hier sicher jemand konkreter weiterhelfen.
 

vk-ecommerce

Neues Mitglied
8. November 2023
13
2
Danke für die Info. Jetzt bin ich schon einen schritt weiter mit meiner SQL Abfrage. In welcher Tabelle finde ich die Kategorien. Ich habe mehrere Datenbank Tabellen gefunden, aber keine davon, die wirklich hilfreich für meine Abfrage ist. Ich habe die WAWI Version 1.8.11.0
 

mh1

Sehr aktives Mitglied
4. Oktober 2020
1.317
366
dbo.tKategorie -> In der Tabelle werden Informationen zu Kategorien gespeichert.
dbo.tKategorieArtikel -> Diese Tabelle verknüpft Artikel und Kategorien.
dbo.tKategorieSprache -> In der Tabelle werden Informationen zu Kategorien abhängig von Plattform und Sprache gespeichert.
Gefunden bei: https://wawi-db.jtl-software.de/tables/1.8.11.0
 

John

Sehr aktives Mitglied
3. März 2012
2.648
512
Berlin
Kategorien sind tricky, weil es ja mehrere Kategorien mit gleichem Namen in unterschiedlichen Zweigen des Kategoriebaumes geben kann.
Einfach locker namentlich per SQL auf eine Kategorie einschränken kann also gründlich in die Hose gehen, wenn es tatsächlich mehrere Kategorien mit dem gleichen Namen in der Datenbank gibt.

Wenn die Abfrage fix ist, die Kategorie also nicht vom User ausgewählt werden können soll, ist es am einfachsten, den internen Schlüssel der Kategorie in der Wawi auszulesen, indem man die Kategorie in der Wawi zur Bearbeitung öffnet. Da wird einem der Interne Schlüssel als Zahl angezeigt.

Mit dieser Zahl lautet dann die Abfrage:

Code:
SELECT
Artikelnummer,
Artikelname,
cHan,
Hersteller,
EinkaufspreisDurchschnittNetto,
VerkaufspreisNetto,
VerkaufspreisBrutto,
Versandklasse,
BestandGesamt
FROM ArtikelVerwaltung.vArtikelliste
JOIN tkategorieartikel ON ArtikelVerwaltung.vArtikelliste.kArtikel = tkategorieartikel.kArtikel
WHERE nistvarkombivater = 0 AND nistvarkombikind = 0 AND cistaktiv = 'Y'
AND tkategorieartikel.kKategorie = InternerSchlüsselDeinerKategorie
ORDER BY
cHAN ASC

Obacht. Das schränkt auf GENAU die eine Kategorie ein. Nicht auf etwaig enthaltene Unterkategorien.
Dafür müßte man sich aus dem Kategoriebaum alle internen Schlüssel aller zu betrachtenden Kategorien besorgen und machen

Code:
AND tkategorieartikel.kKategorie IN (Liste aller InternerenSchlüsselDeinerKategorien)

Wenn in Deinem Programm der Anwender die Kategorie selbst auswählen können soll, so benötigst Du den kompletten Kategoriebaum als TreeView mit den Internen Schlüsseln in den Knoten.
Der user wählt den Knoten und du bekommst Deine kKategorie zur Einschränkung per SQL oder kannst, wenn Unterkategorien enthalten sein sollen, den Baum vom Startknoten aus durchlaufen und die kKategorie sammeln.

Ist halt Arbeit und keine Ahnung ob das in Excel geht.
Baumstruktur aus der Datenbank bauen, Treeview mit Auswahl, Rekursion und so ;)
 
Zuletzt bearbeitet:

John

Sehr aktives Mitglied
3. März 2012
2.648
512
Berlin
Nachtrag.
Zu Berücksichtigen ist auch, dass Kategorien nachträglich in der Wawi umher geschoben werden können, Ihre Position im Baum verändern und sogar umbenannt werden können, dabei der interne Schlüssel aber gleich bleibt!
Das ist logisch, kann aber im Ergebnis überraschen, wenn man es nicht berücksichtig.
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
5.956
573
Es kommt aber auch noch erschwerend dazu, dass Artikel in mehreren Kategorien liegen können.
Wir haben selbst mal in diese Richtung etwas versucht und dann besser sein lassen, die Fehlerquelle ist viel zu groß.
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
639
211
SQL:
--Rekursive Funktion fuer 10 Kategorie-Ebenen
with CatLevels(kOberKategorie, kKategorie, K1, K2, K3, K4, K5, K6, K7, K8, K9, K10, KatLevel) AS
(
   select kOberKategorie, tKategorie.kKategorie,
   cast (cName as nvarchar(255)) as K1,
   cast( '' as nvarchar(255))  as K2
   ,cast( '' as nvarchar(255))  as K3
   ,cast( '' as nvarchar(255))  as K4
   ,cast( '' as nvarchar(255))  as K5
   ,cast( '' as nvarchar(255))  as K6
   ,cast( '' as nvarchar(255))  as K7
   ,cast( '' as nvarchar(255))  as K8
   ,cast( '' as nvarchar(255))  as K9
   ,cast( '' as nvarchar(255))  as K10
   , 1 as katLevel
   FROM dbo.tKategorie inner join dbo.tKategorieSprache as s on tKategorie.kKategorie=s.kKategorie where kOberKategorie=0
   UNION ALL
   SELECT e.kOberKategorie, e.kKategorie,  cast(K1 as nvarchar(255))
   , case when KatLevel=1 then cast(s.cName as nvarchar(255)) else K2 end
   , case when KatLevel=2 then cast(s.cName as nvarchar(255)) else K3 end
   , case when KatLevel=3 then cast(s.cName as nvarchar(255)) else K4 end
   , case when KatLevel=4 then cast(s.cName as nvarchar(255)) else K5 end
   , case when KatLevel=5 then cast(s.cName as nvarchar(255)) else K6 end
   , case when KatLevel=6 then cast(s.cName as nvarchar(255)) else K7 end
   , case when KatLevel=7 then cast(s.cName as nvarchar(255)) else K8 end
   , case when KatLevel=8 then cast(s.cName as nvarchar(255)) else K9 end
   , case when KatLevel=9 then cast(s.cName as nvarchar(255)) else K10 end
   , katLevel + 1
   FROM dbo.tKategorie as e inner join CatLevels as d on e.kOberKategorie=d.kKategorie
   inner join dbo.tKategorieSprache as s on e.kKategorie=s.kKategorie
)
--Beispiel Abfrage, wenn eine der Kategorien Motor heißt--
select tartikel.cArtNr, K1, K2, K3, K4, K5, K6, K7, K8, K9, K10
from CatLevels  inner join dbo.tkategorieartikel as tka  on CatLevels.kKategorie=tka.kKategorie inner join dbo.tartikel on tka.kArtikel=tartikel.kArtikel
WHERE K1='Motor' OR K2='Motor' OR K3='Motor' OR K4='Motor' OR K5='Motor' OR K6='Motor' OR K7='Motor' OR K8='Motor' OR K9='Motor' OR K10='Motor'
 
  • Ich liebe es
  • Gefällt mir
Reaktionen: kelvin. und wawi-dl

mvh

Sehr aktives Mitglied
26. Oktober 2011
639
211
Moin.
Diese Funktion ist über 10 Jahre alt, für die WaWi-Versionen vor 1.6 bitte nvarchar zu varchar ändern.
Mit CONCAT kann man die Kategorienamen zu einem Pfad zusammenfügen ("leere" Kategorien mit IIF(<>'') ausschließen)
Mit freundlichen Grüßen, Ihr MVH-Team
 

wawi-dl

Sehr aktives Mitglied
29. April 2008
5.956
573
EDIT mein Fehler:
sehr schön gelöst :love: in Druckvorlagen mit BC leider nur schwer zu verwenden, aber für Excel ausreichend
 

John

Sehr aktives Mitglied
3. März 2012
2.648
512
Berlin
@mvh die OR Verknüpfung in der WHERE Klausel verstehe ich nicht, bzw. macht die für mich wenig Sinn. Da kann ich mir den ganzen Spaß auch sparen und mir die erstbeste Kategorie mit dem passenden Namen holen.

Ist die Funktion nicht vielleicht eher dafür gedacht, mit AND auf einen spezifischen Kategoriepfad einzuschränken? Also

Code:
WHERE K1='Kleidung' AND K2='Damen' AND K3='Hosen'
 

mvh

Sehr aktives Mitglied
26. Oktober 2011
639
211
@mvh die OR Verknüpfung in der WHERE Klausel verstehe ich nicht, bzw. macht die für mich wenig Sinn. Da kann ich mir den ganzen Spaß auch sparen und mir die erstbeste Kategorie mit dem passenden Namen holen.

Ist die Funktion nicht vielleicht eher dafür gedacht, mit AND auf einen spezifischen Kategoriepfad einzuschränken? Also

Code:
WHERE K1='Kleidung' AND K2='Damen' AND K3='Hosen'
Moin.

Die Wawi hat bis zu 10 Kategorie-Tiefen/-Ebenen.
Das Beispiel habe ich dafür ausgedacht: finde alle Artikel im ganzen Kategorie-Baum, wo der Kategorie-Name "Motor" heißt, egal um welche Fahrzeug-Art es sich handelt.
Wir sind schließlich Motorrad-, Roller-, Quad-, usw. Teilehändler, also der Kategorie-Name kann sich auf Ebene 2 oder 3 oder 6 oder 10 befinden.

In deinem Beispiel geht es um einen exakten und bekannten Kategorie-Pfad.
 
Ähnliche Themen
Titel Forum Antworten Datum
SQL Abfrage für verkaufte Artikel + aktueller Bestand JTL-Wawi 1.8 1
Datenbank-Abfrage per SQL nach Lagermenge pro Artikel & Warenbereich (WMSLager) JTL-Wawi 1.8 1
Beantwortet #GEFUNDEN# Suche jemand , der uns eine (automatische) SQL Abfrage erstellen kann mit Mail Ausgabe Dienstleistung, Jobs und Ähnliches 2
Neu SQL-Abfrage bei Kundenanlage JTL-Wawi 1.7 2
Neu CSV-Datei direkt in einer SQL-Abfrage verwenden User helfen Usern - Fragen zu JTL-Wawi 3
Neu SQL Abfrage Artikelbezeichnung auf Englisch für Artikeletikett User helfen Usern - Fragen zu JTL-Wawi 4
Neu SQL Abfrage wird mehrfach ausgeführt - Ausgabe in der Übersicht falsch Eigene Übersichten in der JTL-Wawi 8
SQL Abfrage via Ameise: Seriennummer u. weitere Daten JTL-Wawi 1.8 0
Neu Kundendatenimport via SQL JTL-Wawi 1.6 1
Neu SQL Ausgabe Bestellinformationen JTL Ameise - Eigene Exporte 4
Neu SQL Script - geänderte Tabellen. User helfen Usern - Fragen zu JTL-Wawi 3
Wie kann ich etwas in der WAWI Datenbank per SQL ändern? JTL-Wawi 1.8 2
Neu Logfile: SQL Fehler, aber warum? JTL-Shop - Fehler und Bugs 2
Neu Erstinstallation JTL WaWi 1.8.12 - heruntergeladen wird SQL Express 2017 _statt_ der empfohlenen 2022 Version Installation von JTL-Wawi 8
Neu MS SQL Server 2022 oder MS SQL Server 2022 Express? Installation von JTL-Wawi 8
Neu SQL-Fehler bei Volltextsuche und Sonderzeichen JTL-Shop - Fehler und Bugs 0
Neu einfache SQL Verknüfpung zweier Tabellen, z.B. Artikel mit ArtikelBeschreibung 1.6.46.1 Gelöste Themen in diesem Bereich 13
Neu SQL Ausgabe der Varko-Auswahl eines Artikels, mehrsprachig Tabelle zwei mal auf sich Joinen? User helfen Usern - Fragen zu JTL-Wawi 5
Neu SQL-Erfahrene vor - Nach Datenrettung - fehlende Aufträge lassen sich nicht einfügen - Ideen? User helfen Usern 4
Neu Nach Installation eines neuen SQL Servers klappt die Verbindung vom Benutzer-PC zum Server-PC nicht mehr. Installation von JTL-Wawi 5
Neu Fehler SQL-Schema importieren bei Neuinstallation Installation / Updates von JTL-Shop 7
Neu Update MS SQL 2014 auf MS SQL 2022 User helfen Usern - Fragen zu JTL-Wawi 0
Neu Datenbankebene per SQL löschen Eigene Übersichten in der JTL-Wawi 6
Neu MS SQL 14 Express wird langsam voll. Welche Lienzen benötigen wir? Bitte um Hilfe Eigene Übersichten in der JTL-Wawi 27
Upgrade von SQL Server 2014 auf höhere Version JTL-Wawi 1.8 4
1.8.11.0 - Worker SQL lässt System hängen JTL-Wawi 1.8 0
Neu List&Label Merkmale auf Etiketten (SQL) Gelöste Themen in diesem Bereich 3
Neu SQL Server Express 2017 auf 2022 Update Installation von JTL-Wawi 10
Neu Nach SQL Server neuinstallation Benutzer gelöscht? JTL-Wawi - Fehler und Bugs 3
Neu Versandart + Zahlungsart in Rechnungskorrektur (SQL) User helfen Usern - Fragen zu JTL-Wawi 10
Neu Abfrage des Lieferantenbestands Eigene Übersichten in der JTL-Wawi 4
Neu Abfrage von Änderungen am Lagerbestand zu einem bestimmten Zeitpunkt in der Vergangenheit JTL Ameise - Eigene Exporte 3
Export von Bestellungen als Excel JTL-Wawi 1.6 1
Neu Wie kann ich eine Inventurliste als Excel- oder csv-Datei erstellen? Gelöste Themen in diesem Bereich 3

Ähnliche Themen