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

John

Sehr aktives Mitglied
3. März 2012
4.203
1.079
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.203
1.079
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
168
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.204
452
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
In Diskussion Kundengruppe nach Umsatz (SQL in Workflow) JTL-Workflows - Ideen, Lob und Kritik 5
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 6
Neu Ausgabe von Artikelbeschreibung: Stückliste + Artikel-Bild JTL-Wawi 2.0 5
Neu JTL-Shop 5.7.2: Unterschiedliche Standardsprachen in tsprache – widersprüchliche Canonical- und Hreflang-Ausgabe der Startseite Allgemeine Fragen zu JTL-Shop 4
Neu Erfahrungen mit DHL Paket International Premium Tarife in der JTL-Shipping-Cloud ? JTL-ShippingLabels - Ideen, Lob und Kritik 1
Seit Update ständiges Aufhängen der Wawi JTL-Wawi 2.0 0
Barzahlung wird nach dem Speichern beim Rechnungsdruck nicht angezeigt, in der Vorschau jedoch schon JTL-Wawi 2.0 0
Neu JTL-Shop 5.5 – „Rechnung nicht beilegen“ per Workflow anhand der Auftragsposition erkennen User helfen Usern - Fragen zu JTL-Wawi 1
Neu Nutzlose Tabellenspalte bei Inventur innerhalb der Wawi User helfen Usern - Fragen zu JTL-Wawi 1
Neu Kunde hat über POS per Karte angezahlt. Wie Buchung der Restzahlung (BON)? Allgemeine Fragen zu JTL-POS 1
Neu Versandarten – bin ich der Einzige, der da jedes Mal verzweifelt? Allgemeine Fragen zu JTL-Shop 1
Neu Außlandsversand deaktivieren wegen der neuen PPWR Betrieb / Pflege von JTL-Shop 22
Neu onpage SEO auf SW - Was ist mit der Wawi? Shopware-Connector 1
Neu Gutscheinartikel nur noch im Shop in der Datenbank Betrieb / Pflege von JTL-Shop 0
Neu Bestellpositionen werden in Sprache der Kunde an die Wawi übermittelt. Kann man das ausstellen? User helfen Usern - Fragen zu JTL-Wawi 17
Neu GLS in Shipping 2.0: Neue ShipIT-Anbindung & zentrale Tarife jetzt live – Migration von der alten WebAPI bis zum 30. September News, Events und Umfragen 5
Neu Amazon Versandart matchen in der Wawi Amazon-Lister - Fehler und Bugs 2
Nachkommastellen in der X Rechnung JTL-Wawi 1.10 1
Format der E-Mail Adresse ist ungültig. Otto.de - Anbindung (SCX) 0
Neu Deine Meinung ist gefragt: direkte Anbindung der Schweizerischen Post (CH Post) in Shipping 2.0? Umfragen rund um JTL 2
Neu Cross-Links in der Navigation Allgemeine Fragen zu JTL-Shop 1
Neu Artikeletikett drucken: Automatische Mengenermittlung der zu druckenden Etiketten Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Länge der Beschreibung unter den Unterkats Templates für JTL-Shop 2
Kein Skonto in der XRechnung? JTL-Wawi 1.11 0
Neu Mail mit Plugin zum testen der Sicherheitslücke echt? Allgemeine Fragen zu JTL-Shop 47
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 3
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 2
Neu Sortierung der Variationswerte funktioniert nicht mehr Shopify-Connector 19
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 2
Freie Felder in der Artikelliste anzeigen JTL-Wawi 2.0 3

Ähnliche Themen