Neu SQL Ausgabe der Varko-Auswahl eines Artikels, mehrsprachig Tabelle zwei mal auf sich Joinen?

John

Sehr aktives Mitglied
3. März 2012
4.144
1.055
Berlin
Hallo,

ich möchte in einem System, in dem es nur Artikel mit einer Variation gibt eine Tabelle, in der die Artikelnummer, der Name der Variation und der Variationswert steht.

Das funktioniert für Deutsch auch prima mit

Code:
SELECT vStandardArtikel.kArtikel,
         cArtNr,
         vStandardArtikel.kEigenschaftKombi,
         tEigenschaftKombiWert.kEigenschaft,
         tEigenschaftKombiWert.kEigenschaftWert,
         tEigenschaftSprache.cName AS 'VarName DE',
         tEigenschaftWertSprache.cName AS 'VarWert DE'
         FROM vStandardArtikel
         JOIN tArtikelShop ON tArtikelShop.kArtikel = vStandardArtikel.kArtikel
         JOIN tEigenschaftKombiWert on vStandardArtikel.kEigenschaftKombi = tEigenschaftKombiWert.kEigenschaftKombi
         JOIN tEigenschaftSprache on tEigenschaftKombiWert.kEigenschaft = tEigenschaftSprache.kEigenschaft
         JOIN tEigenschaftWertSprache ON tEigenschaftKombiWert.kEigenschaftWert = tEigenschaftWertSprache.kEigenschaftWert
         WHERE vStandardArtikel.cAktiv = 'Y'
         AND vStandardArtikel.kVaterArtikel <> 0
         AND tEigenschaftSprache.kSprache = 1
         AND tEigenschaftWertSprache.kSprache = 1
         ORDER BY cArtNr ASC

Jetzt hätte ich gerne zwei weitere Spalten, in denen die englischen Belegungen für die Variation und den Variationswert stehen.

Irgendwie muß man tEigenschaftSprache und tEigenschaftWertSprache noch einmal dazu joinen aber mit tEigenschaftSprache.kSprache = 3 und tEigenschaftWertSprache.kSprache = 3.
Leider reicht mein SQL dazu nicht.

Habt Ihr eine Idee?
@mvh ?

Gruß

John
 

Anhänge

  • Varko-Ausgabe.png
    Varko-Ausgabe.png
    30,2 KB · Aufrufe: 7

John

Sehr aktives Mitglied
3. März 2012
4.144
1.055
Berlin
@JTLSupporter danke, Dein Ansatz ist naheliegend und liefert die gesichten Werte aber als eine weitere Zeile.

Ich benötige keine weitere Zeile sondern die Werte innerhalb der gleichen Zeile als zwei weitere Spalten

Das geht vermutlich eher so in Richtung Abfrage erstellen und das Ergebnis dann nochmal joinen...
 

kelvin.

Sehr aktives Mitglied
15. Februar 2023
166
65
Frankfurt
Du musst wahrscheinlich die Abfrage noch anpassen. Aber so bekommst du die Artikel in eine Zeile und die Sprache in Spalten
SQL:
WITH Query As (
    SELECT
        vStandardArtikel.kArtikel,
        cArtNr,
        vStandardArtikel.kEigenschaftKombi,
        tEigenschaftKombiWert.kEigenschaft,
        tEigenschaftKombiWert.kEigenschaftWert,
        tEigenschaftSprache.cName AS VarName,
        tEigenschaftWertSprache.cName AS VarWert,
        tEigenschaftSprache.kSprache AS VarNameS,
        tEigenschaftWertSprache.kSprache AS VarWertS
    FROM vStandardArtikel
    JOIN tArtikelShop
        ON tArtikelShop.kArtikel = vStandardArtikel.kArtikel
    JOIN tEigenschaftKombiWert
        ON vStandardArtikel.kEigenschaftKombi = tEigenschaftKombiWert.kEigenschaftKombi
    JOIN tEigenschaftSprache
        ON tEigenschaftKombiWert.kEigenschaft = tEigenschaftSprache.kEigenschaft
    JOIN tEigenschaftWertSprache
        ON tEigenschaftKombiWert.kEigenschaftWert = tEigenschaftWertSprache.kEigenschaftWert
    WHERE
        vStandardArtikel.cAktiv = 'Y'
        AND vStandardArtikel.kVaterArtikel <> 0
    ),
    Query1 AS (
        SELECT *
        FROM Query
        WHERE
            VarNameS = 1
            AND VarWertS = 1
    ),
    Query2 AS (
        SELECT *
        FROM Query
        WHERE
            VarNameS = 2
            AND VarWertS = 2
    ),
    Query3 AS (
        SELECT *
        FROM Query
        WHERE
            VarNameS = 3
            AND VarWertS = 3
    )
    
SELECT
    *
FROM Query1 AS Q1
FULL OUTER JOIN Query2 AS Q2
    ON Q2.kArtikel = Q1.kArtikel
FULL OUTER JOIN Query3 AS Q3
    ON Q3.kArtikel = Q1.kArtikel
ORDER BY Q1.cArtNr ASC
 
  • Ich liebe es
Reaktionen: John

mvh

Sehr aktives Mitglied
26. Oktober 2011
1.156
444
Hallo,

ich möchte in einem System, in dem es nur Artikel mit einer Variation gibt eine Tabelle, in der die Artikelnummer, der Name der Variation und der Variationswert steht.

Das funktioniert für Deutsch auch prima mit

Code:
SELECT vStandardArtikel.kArtikel,
         cArtNr,
         vStandardArtikel.kEigenschaftKombi,
         tEigenschaftKombiWert.kEigenschaft,
         tEigenschaftKombiWert.kEigenschaftWert,
         tEigenschaftSprache.cName AS 'VarName DE',
         tEigenschaftWertSprache.cName AS 'VarWert DE'
         FROM vStandardArtikel
         JOIN tArtikelShop ON tArtikelShop.kArtikel = vStandardArtikel.kArtikel
         JOIN tEigenschaftKombiWert on vStandardArtikel.kEigenschaftKombi = tEigenschaftKombiWert.kEigenschaftKombi
         JOIN tEigenschaftSprache on tEigenschaftKombiWert.kEigenschaft = tEigenschaftSprache.kEigenschaft
         JOIN tEigenschaftWertSprache ON tEigenschaftKombiWert.kEigenschaftWert = tEigenschaftWertSprache.kEigenschaftWert
         WHERE vStandardArtikel.cAktiv = 'Y'
         AND vStandardArtikel.kVaterArtikel <> 0
         AND tEigenschaftSprache.kSprache = 1
         AND tEigenschaftWertSprache.kSprache = 1
         ORDER BY cArtNr ASC

Jetzt hätte ich gerne zwei weitere Spalten, in denen die englischen Belegungen für die Variation und den Variationswert stehen.

Irgendwie muß man tEigenschaftSprache und tEigenschaftWertSprache noch einmal dazu joinen aber mit tEigenschaftSprache.kSprache = 3 und tEigenschaftWertSprache.kSprache = 3.
Leider reicht mein SQL dazu nicht.

Habt Ihr eine Idee?
@mvh ?

Gruß

John
Moin.
Ich kenne 3 Wege (es gibt bestimmt noch mehr), um das Problem zu lösen.
Ich nenne diese: Klassisch, SQL Server und Tricky.
Ich verwende hier SELECT DISTINCT, weil auch in deinem Beispiel die Abfrage je Kombi/KombiWert 2 x Ergebnisse liefern würde.

Klassisch:
SQL:
SELECT DISTINCT vStandardArtikel.kArtikel,
         cArtNr,
         vStandardArtikel.kEigenschaftKombi,
         tEigenschaftKombiWert.kEigenschaft,
         tEigenschaftKombiWert.kEigenschaftWert,
         tEigenschaftSprache.cName AS 'VarName DE',
         tEigenschaftWertSprache.cName AS 'VarWert DE',
         enn.[VarName EN], ens.[VarWert EN]
         FROM vStandardArtikel
         JOIN tArtikelShop ON tArtikelShop.kArtikel = vStandardArtikel.kArtikel
         JOIN tEigenschaftKombiWert on vStandardArtikel.kEigenschaftKombi = tEigenschaftKombiWert.kEigenschaftKombi
         JOIN tEigenschaftSprache on tEigenschaftKombiWert.kEigenschaft = tEigenschaftSprache.kEigenschaft
         JOIN tEigenschaftWertSprache ON tEigenschaftKombiWert.kEigenschaftWert = tEigenschaftWertSprache.kEigenschaftWert
         LEFT JOIN (
         SELECT ISNULL(ens.cName,'') as 'VarName EN', ens.kEigenschaft FROM tEigenschaftSprache ens WHERE ens.kSprache=2
         ) enn on tEigenschaftKombiWert.kEigenschaft = enn.kEigenschaft
         LEFT JOIN (
         SELECT ISNULL(enw.cName,'') as 'VarWert EN', enw.kEigenschaftWert FROM tEigenschaftWertSprache enw WHERE enw.kSprache=2
         ) ens on tEigenschaftKombiWert.kEigenschaftWert = ens.kEigenschaftWert
         WHERE vStandardArtikel.cAktiv = 'Y'
         AND vStandardArtikel.kVaterArtikel <> 0
         AND tEigenschaftSprache.kSprache = 1
         AND tEigenschaftWertSprache.kSprache = 1
         ORDER BY cArtNr ASC

Hier werden 2 gleiche Tabellen mit einem anderen Namen verwendet.
Es wird oft benutzt und kostet wenig (durch DBMS-Optimierung).

SQL Server:
SQL:
SELECT DISTINCT vStandardArtikel.kArtikel,
         cArtNr,
         vStandardArtikel.kEigenschaftKombi,
         tEigenschaftKombiWert.kEigenschaft,
         tEigenschaftKombiWert.kEigenschaftWert,
         tEigenschaftSprache.cName AS 'VarName DE',
         tEigenschaftWertSprache.cName AS 'VarWert DE',
         enn.[VarName EN], ens.[VarWert EN]
         FROM vStandardArtikel
         JOIN tArtikelShop ON tArtikelShop.kArtikel = vStandardArtikel.kArtikel
         JOIN tEigenschaftKombiWert on vStandardArtikel.kEigenschaftKombi = tEigenschaftKombiWert.kEigenschaftKombi
         JOIN tEigenschaftSprache on tEigenschaftKombiWert.kEigenschaft = tEigenschaftSprache.kEigenschaft
         JOIN tEigenschaftWertSprache ON tEigenschaftKombiWert.kEigenschaftWert = tEigenschaftWertSprache.kEigenschaftWert
         OUTER APPLY (SELECT ISNULL(ens.cName,'') as 'VarName EN' FROM tEigenschaftSprache ens WHERE ens.kSprache=2 AND ens.kEigenschaft=tEigenschaftKombiWert.kEigenschaft) enn
         OUTER APPLY (SELECT ISNULL(enw.cName,'') as 'VarWert EN' FROM  tEigenschaftWertSprache enw WHERE enw.kSprache=2 AND enw.kEigenschaftWert=tEigenschaftKombiWert.kEigenschaftWert) ens
         WHERE vStandardArtikel.cAktiv = 'Y'
         AND vStandardArtikel.kVaterArtikel <> 0
         AND tEigenschaftSprache.kSprache = 1
         AND tEigenschaftWertSprache.kSprache = 1
         ORDER BY cArtNr ASC

Die OUTER und CROSS APPLY Operatoren sind Tabellen-Wert "Funktionen", die beim ersten Aufruf "kompiliert" werden und als "Inline"-Funktion verwendet werden.
In diesem Beispiel ist es passend: 1 Wert wird zurückgegeben und 2 Argumente/Parameter: Sprache und KombiKey, werden gebraucht.

Tricky:
SQL:
SELECT vStandardArtikel.kArtikel,
         cArtNr,
         vStandardArtikel.kEigenschaftKombi,
         tEigenschaftKombiWert.kEigenschaft,
         tEigenschaftKombiWert.kEigenschaftWert,
         MAX(CASE WHEN tEigenschaftSprache.kSprache=1 THEN tEigenschaftSprache.cName ELSE '' END) AS 'VarName DE',
         MAX(CASE WHEN tEigenschaftWertSprache.kSprache=1 THEN tEigenschaftWertSprache.cName ELSE '' END) AS 'VarWert DE',
         MAX(CASE WHEN tEigenschaftSprache.kSprache=2 THEN tEigenschaftSprache.cName ELSE '' END) AS 'VarName EN',
         MAX(CASE WHEN tEigenschaftWertSprache.kSprache=2 THEN tEigenschaftWertSprache.cName ELSE '' END) AS 'VarWert EN'
         FROM vStandardArtikel
         JOIN tArtikelShop ON tArtikelShop.kArtikel = vStandardArtikel.kArtikel
         JOIN tEigenschaftKombiWert on vStandardArtikel.kEigenschaftKombi = tEigenschaftKombiWert.kEigenschaftKombi
         JOIN tEigenschaftSprache on tEigenschaftKombiWert.kEigenschaft = tEigenschaftSprache.kEigenschaft
         JOIN tEigenschaftWertSprache ON tEigenschaftKombiWert.kEigenschaftWert = tEigenschaftWertSprache.kEigenschaftWert
             WHERE vStandardArtikel.cAktiv = 'Y'
         AND vStandardArtikel.kVaterArtikel <> 0
         AND tEigenschaftSprache.kSprache IN (1,2)
         AND tEigenschaftWertSprache.kSprache IN (1,2)
         GROUP BY vStandardArtikel.kArtikel,
         cArtNr,
         vStandardArtikel.kEigenschaftKombi,
         tEigenschaftKombiWert.kEigenschaft,
         tEigenschaftKombiWert.kEigenschaftWert
         ORDER BY cArtNr ASC
Hier wird BTREE nur einmal durchsucht, die Gruppierung kostet nur etwas mehr als Sortierung.

Ich hoffe, ich konnte deine Frage beantworten.
Viele Grüße, Ihr MVH-Team
 
Zuletzt bearbeitet:
  • Ich liebe es
  • Gefällt mir
Reaktionen: ple und John
Ähnliche Themen
Titel Forum Antworten Datum
Neu Dedicated SQL Server am Limit Merkmale Betrieb / Pflege von JTL-Shop 1
ändern von Servernamen nach Neuinstallation von SQL und Verbindung mit neuem Server in der Wawi JTL-Wawi 2.0 2
Neu Arbeiten mit Lieferanten EKs - Workflows und SQL User helfen Usern - Fragen zu JTL-Wawi 6
Neu JTL → Shopify Connector: MappingTablesException / „Endpoint id is empty“ – betroffene Artikel aus Logs per SQL finden Shopify-Connector 2
welche Microsoft SQL Server Version läuft am stabilsten? JTL-Wawi 2.0 2
Neu MS Server und MS SQL Installation von JTL-Wawi 5
WMS Lagerbestand Bezeichnung in SQL Datenbank JTL-Wawi 1.11 2
Für Ihren SQL-Server wurde ein Service Pack zur Verfügung gestellt - nö, gelogen, wie kriege ich die Meldung weg? JTL-Wawi 1.11 15
Wawi Meldung SQL Servicepack zu installieren - aber welches? Update SQL2022 CU24 nicht möglich JTL-Wawi 1.11 6
CSV Exportvorlage - SQL Abfrage Eigenes Feld JTL-Wawi 2.0 4
Keine Rückmeldung in JTL Wawi sobald SQL Server Memory durch Database Cache ausgeslastet ist JTL-Wawi 2.0 9
Update auf 1.11 verlangt ein Update auf aktuelleren SQL Server JTL-Wawi 1.11 7
Neu SQL Lagerbestand minus in Aufträgen Eigene Übersichten in der JTL-Wawi 4
Neu SQL-Server geht eine Stunde nach Allgemeine Fragen zu JTL-Shop 4
Neu Mail mit Plugin zum testen der Sicherheitslücke echt? Allgemeine Fragen zu JTL-Shop 6
B2B Market - Probleme beim zuweisen der Kundengruppe (gelöst) JTL-Wawi 1.11 0
Neu Amazon - Einlesen / Übernahme der Bestellungen klappt nicht ?! Amazon-Anbindung - Fehler und Bugs 2
QR-Code auf der Rechnung gibt 100-fachen Betrag des eigentlichen Rechnungsbetrages aus JTL-Wawi 2.0 5
Fehlermeldung beim Einlesen der Buchungen in JTL Fibu JTL-Wawi 2.0 2
Neu Wird irgendwo in der Datenbank geloggt welcher WMS-Mobile Benutzer mit dem MDE-Gerät einen Auftrag, bzw. Pickliste gepickt hat? User helfen Usern - Fragen zu JTL-Wawi 1
Neu Gibt es in der WaWi-Datenbank einen Zeitstempel, der anzeigt wann ein Kunde sich in einem bestimmten Shop registriert hat? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Amazon.com - kein Abgleich der Bestände Wawi 1.11.9 Amazon-Anbindung - Fehler und Bugs 0
Name der Versandarten wird im Auftrag sporadisch nicht mehr angezeigt (2.0.3) JTL-Wawi 2.0 2
Neu Wawi 1.11. Amazon Rechnungen (extern) in der Kundenansicht verschwunden ?! User helfen Usern - Fragen zu JTL-Wawi 2
Neu Der wahrscheinlich östlichste JTL Servicepartner: Standortvorteil, faire Preise und vieles mehr Dienstleistung, Jobs und Ähnliches 16
Neu Eigener Export - Kunden individuelle Preise + verfügbarer Bestand + VK netto der Kundengruppe User helfen Usern - Fragen zu JTL-Wawi 6
Neu Rechnungen zeigen Paypal Text an, obwohl er in der Vorlage nicht ausgewählt ist JTL-Wawi 2.0 3
Updatezwang beim öffnen der WAWI JTL-Wawi 1.6 13
Neu Produktionsaufträge tauchen nicht in der Workbench auf JTL-Plan&Produce - Fehler und Bugs 2
Neu Ist es ohne Probleme möglich Cloudflare in der Free Version mit JTL zu nutzen? Allgemeine Fragen zu JTL-Shop 7
Neu Paypal 2.2.1; Fehler "Der Zahlungsanbieter hat eine Anmeldung gefordert" Plugins für JTL-Shop 0
Neu Sortierung der Variationswerte funktioniert nicht mehr Shopify-Connector 6
Neu Wert aus „Eigenes Feld“ eines Artikels im Lieferschein unter der Artikelbezeichnung anzeigen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Rabatte aus dem JTL-Shop werden in der Wawi nur als Netto-Preis übernommen, Rabatt % gehen verloren Onlineshop-Anbindung 0
Freie Felder in der Artikelliste anzeigen JTL-Wawi 2.0 3
Neu Erstellung der Sitemap bei WaWi Abgleich funktioniert nicht Allgemeine Fragen zu JTL-Shop 0
Neu Unterschiedliche Abnahmeintervalle von Variationskombinationen in der Warenkorbmatrix Templates für JTL-Shop 0
Neu Betrag auf der Rechnung nach Rechnungskorrektur User helfen Usern - Fragen zu JTL-Wawi 1
Neu PDF Anhänge in der Bestellbestätigung anhängen missglückt JTL-Shop - Fehler und Bugs 1
Neu Anzahl der URLs in der Sitemap ändern Allgemeine Fragen zu JTL-Shop 3
Neu Ab welcher JTL Wawi Version ist der OnPremise REST API Endpoint POST /v2/returns oder POST /v1/returns für Create Return verfügbar? Schnittstellen Import / Export 0
Neu ⚠️📦 ACHTUNG: Abkündigung der DHL-Schnittstelle zum 15.06.2026 News, Events und Umfragen 0
Neu Telemetrie-Datenerfassung in JTL-Shop 5.7.0: Bitte um Klarstellung der DSGVO-relevanten Aspekte Allgemeine Fragen zu JTL-Shop 5
Frage zur Speicherung der Produktbilder JTL-Wawi 1.11 1
Neu Der Inhalt / Text ist verschwunden – ist das ein Fehler JTL-Shop - Fehler und Bugs 0
Plattformabgleich Shop löschen - Wo ist das in der MySQL DB? JTL-Wawi 2.0 4
Anzeige der Variantenartikel JTL-Wawi 1.11 0
Neu Workflows speichern z.B. Rechnungen nicht mehr seid der 2.01 User helfen Usern - Fragen zu JTL-Wawi 1
Neu Ein Artikel in der Kategorie Allgemeine Fragen zu JTL-Shop 5
Neu Widerrufsbutton: Jeder, der den Button betätigt, kann das Widerrufsformular ausfüllen und absenden - auch ohne Bestellung? Allgemeine Fragen zu JTL-Shop 94

Ähnliche Themen