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

John

Sehr aktives Mitglied
3. März 2012
3.885
942
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
3.885
942
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.001
361
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 Welche SQL Server Version für WaWi 1.0.0.0.0 unter Windows 11 Installation von JTL-Wawi 6
Neu Bilder von Kinderartikeln auf Vaterartikel kopieren via SQL Eigene Übersichten in der JTL-Wawi 2
Neu Täglich SQL Backup vom Shop Allgemeine Fragen zu JTL-Shop 2
Kann ich mit dieser SQL Version die neue WaWi 1.11.1 installieren? JTL-Wawi 1.11 2
Neu Kundengruppe per SQL löschen User helfen Usern - Fragen zu JTL-Wawi 3
Neu Sql Express 2022 - wawi sagt beim Start es ist ein Update bereit - gelöst Installation von JTL-Wawi 3
Neu Extern erstelltes SQL - Angebot falsche Werte User helfen Usern - Fragen zu JTL-Wawi 3
Neu In welcher SQL Tabelle finde ich den Ansprechpartner des Herstellers? User helfen Usern - Fragen zu JTL-Wawi 2
Neu Seriennummern und SQL Abfragen User helfen Usern - Fragen zu JTL-Wawi 1
Update SQL Server Management Studio JTL-Wawi 1.10 1
Neu Einrichtung SQL in neuem Rechner funktioniert nicht Installation von JTL-Wawi 3
Neu SQL Code für GPSR Felder (Kaufland) zeigt Fehler + wird daher nicht übertragen kaufland.de - Anbindung (SCX) 0
Neu SQL für noch nie Verkaufte Artikel auf Marktplätzen. User helfen Usern - Fragen zu JTL-Wawi 3
Neu Update von 1.5.55.5 auf aktuell, welche Reihenfolge, SQL Express auf Standard Installation von JTL-Wawi 10
Neu PayPal - PayPal Checkout - 221 – SQL Fehler Plugins für JTL-Shop 0
Neu Lieferschein: Hinweis auf Teillieferung in Ausgabe 2.0 Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
JTL 1.11 aus Downloads und Supportseite verschwunden / ZugFerd Ausgabe geändert? JTL-Wawi 1.11 2
Neu Ausgabe von Artikeldaten außerhalb der "Position Table" - im Auftrag Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Ausgabe Packliste bei Teillieferung User helfen Usern - Fragen zu JTL-Wawi 0
Neu Zeilen in der Verkaufsübersicht farblich markieren Eigene Übersichten in der JTL-Wawi 0
Neu 0,1% an der Kasse erstellte Kunden nicht synchronisiert mit JTL Wawi Allgemeine Fragen zu JTL-POS 0
Kein e-Mail Versand aus der Wawi - Fehlermeldung JTL-Wawi 1.11 10
Neu Änderung der Spezialseite "Versandinformationen" zeigt sich nicht im Frontend Betrieb / Pflege von JTL-Shop 2
Neu Umrechnung von Verkaufsmengen in der Auftragserfassung Arbeitsabläufe in JTL-Wawi 0
Neu JTL Connector - Shopware 5 / 6: keine Erstübertragung der Daten Shopware-Connector 2
Lagerbestände mit der Ameise korrigieren JTL-Wawi 1.6 0
Neu Ärger mit CountX: Verzögerung bei der Bearbeitung von VCS-Daten in WAWI führt zu unvollständigen Steuerdaten User helfen Usern - Fragen zu JTL-Wawi 0
Neu Nicht schließende Mouse-Over-Swatches in der Zweispalten-Darstellung JTL-Shop - Fehler und Bugs 0
Neu Unterstützung bei JTL FFN Retouren – Fehler in der API-Übertragung von Returnless Starten mit JTL: Projektabwicklung & Migration 0
Liste exportieren mit Kategorien und Anzahl der Artikel in der jeweiligen Kategorie JTL Ameise - Eigene Exporte 3
Neu Amazon Abgleich - seit 14 Uhr keine Übernahme der Bestellungen Amazon-Anbindung - Fehler und Bugs 56
Neu Probleme bei der Umstellung von Varkombi auf Konfigurationsartikel User helfen Usern - Fragen zu JTL-Wawi 0
Neu Utopische Lieferzeiten mit der Post User helfen Usern - Fragen zu JTL-Wawi 1
Neu Kassensysteme der Zukunft – wie gut sind aktuelle Lösungen auf kommende Anforderungen vorbereitet? Starten mit JTL: Projektabwicklung & Migration 1
Neu Downgrade von 3 JTL-Shop-Lizenzen auf 1 – Frage zur Umstellung der Domains User helfen Usern - Fragen zu JTL-Wawi 1
Neu Problem beim Start der manuellen eBay-Synchronisierung User helfen Usern - Fragen zu JTL-Wawi 0
Neu Kartenzahlung mit Zettle / Wo finde ich einen Transaktionscode in der Datenbank? Allgemeine Fragen zu JTL-POS 0
Keine automatische Picklistenerstellung mehr außer in der Enterprise Version JTL-Wawi 1.11 6
Neu Lieferanten in der Artikelübersicht User helfen Usern - Fragen zu JTL-Wawi 2
Umlagerung zu Amazon-FBA plötzlich nicht mehr möglich: Zugewiesende Amazon-SKU weg: "Es befinden sich Artikel ohne Amazon-SKU in der Umlagerung." JTL-Wawi 1.9 7
Neu Downloadmodul: Keine Daten in der Wawi Plugins für JTL-Shop 1
Ich möchte den Bestand der Verpackungskartons im System verwalten und nachverfolgen JTL-Wawi 1.10 2
Neu JTL Shop Brevo Plugin meldet keine Abmeldungen an JTL Shop + Kontakte landen nicht in der Willkommenssequenz Plugins für JTL-Shop 0
Neu Nova Template 5.6.0 - Sortierung Merkmal in der Navigationsbox Templates für JTL-Shop 1
Verkauf - Fehler beim Laden der Daten JTL-Wawi 1.11 6
Was ist mit der Wawi 1.11.0? JTL-Wawi 1.11 20
Neu DATEV Rechnungsdatenservice 2.0 Fehlermeldung bei der Übertragung Schnittstellen Import / Export 4
Neu JTL Wawi 1.10.14.3 / Unbehandelte Ausnahme im WaWi-Error-Log / Die Sammlung wurde geändert. Der Enumerationsvorgang kann möglicherweise .... JTL-Wawi - Fehler und Bugs 1
Neu JTL Shop Update von 5.3.3 auf 5.6 mit der Community Free Edition - WaWi funktion weiter gegeben? User helfen Usern - Fragen zu JTL-Wawi 1
Otto Variantenanlage ohne Vaterartikel in der Wawi Otto.de - Anbindung (SCX) 0

Ähnliche Themen