Neu Eigene Felder / Attribute spaltenweise exportieren

Felix-lg

Aktives Mitglied
22. November 2022
70
17
Hallo Zusammen,
ich versuche eine SQL Abfrage zu erstellen mit der ich am Ende bestimmte Eigene Felder in Form von Spalten ausgeben kann (als Bestandteil eines eigenen Exports mit weiteren Spalten).
Komme damit aber leider gar nicht weiter.

Folgende SQL gibt alle Attribute als Spalten aus (so wie auch der übliche Export):

SQL:
SELECT
cArtNr AS 'Artikelnummer',
vStdA.cName AS 'Artikelname',

tAttributSprache.cName AS 'Name',
CASE
    WHEN tFeldTyp.nDatenTyp = 0 THEN CONVERT(VARCHAR, tArtikelAttributSprache.nWertInt)
    WHEN tFeldTyp.nDatenTyp = 1 THEN CONVERT(VARCHAR, tArtikelAttributSprache.fWertDecimal)
    WHEN tFeldTyp.nDatenTyp = 2 THEN tArtikelAttributSprache.cWertVarchar
    WHEN tFeldTyp.nDatenTyp = 3 THEN CONVERT(VARCHAR, tArtikelAttributSprache.dWertDateTime, 104)
END AS 'Wert'

FROM vStandardArtikel vStdA
JOIN tArtikelAttribut on tArtikelAttribut.kArtikel = vStdA.kArtikel
JOIN tAttributSprache on tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
JOIN tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut= tArtikelAttributSprache.kArtikelAttribut
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp

WHERE tArtikelAttributSprache.kSprache = 0
AND cArtNr LIKE 'PT%'

Folgende SQL gibt nur ein bestimmtes Attribut aus (siehe: https://forum.jtl-software.de/threads/sql-fuer-export-eines-eigenen-feldes.211059/):

SQL:
DECLARE @EigenesFeldName VarChar(128)

-- ###### Hier den Namen des Eigenen Feldes Eintragen ######
SET @EigenesFeldName = 'Dein Feld Name'
-- #########################################################

SELECT
cArtNr AS 'Artikelnummer',
vStdA.cName AS 'Artikelname',
@EigenesFeldName AS 'Name',
CASE
    WHEN tFeldTyp.nDatenTyp = 0 THEN CONVERT(VARCHAR, tArtikelAttributSprache.nWertInt)
    WHEN tFeldTyp.nDatenTyp = 1 THEN CONVERT(VARCHAR, tArtikelAttributSprache.fWertDecimal)
    WHEN tFeldTyp.nDatenTyp = 2 THEN tArtikelAttributSprache.cWertVarchar
    WHEN tFeldTyp.nDatenTyp = 3 THEN CONVERT(VARCHAR, tArtikelAttributSprache.dWertDateTime, 104)
END AS 'Wert',
tFeldTyp.cName AS 'Datentyp (sonst autom. ermitteln)'
FROM vStandardArtikel vStdA
JOIN tArtikelAttribut on tArtikelAttribut.kArtikel = vStdA.kArtikel
JOIN tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut= tArtikelAttributSprache.kArtikelAttribut
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp
WHERE tArtikelAttributSprache.kSprache = 0
AND tArtikelAttribut.kAttribut=(SELECT TOP(1) kAttribut FROM tAttributSprache WHERE kSprache = 0 AND cName = @EigenesFeldName)


Was ich nun möchte ist im Grunde, eine Asuwahl von mehreren Eigenen Felder in mehreren Spalten.
Ich habe es schon ein wenig mit dem PIVOT Befehl versucht, habe aber keine Ahnung wie es gehen könnte. Dafür sind meine SQL Kenntnisse einfach viel zu gering...

Wenn jemand helfen kann oder Hinweise hat, wäre ich dankbar.

Gruß
Felix
 

frankell

Sehr aktives Mitglied
9. September 2019
724
287
Flensburg
Deinen Code habe ich so belassen und als CTE gesetzt:

SQL:
DECLARE @EigenesFeldName1 NVARCHAR(16) = (SELECT 'EigenesFeldName1');
DECLARE @EigenesFeldName2 NVARCHAR(22) = (SELECT 'EigenesFeldName2');
DECLARE @EigenesFeldName3 NVARCHAR(12) = (SELECT 'EigenesFeldName3');

-- CTE erstellen
WITH CTE (Artikelnummer, Artikelname, Attributname, Attributwert, Attributdatentyp) AS (
SELECT
    vStdA.cArtNr AS [Artikelnummer],
    vStdA.cName AS [Artikelname],
    tAttributSprache.cName AS [Attributname],
    CASE
        WHEN tFeldTyp.nDatenTyp = 0 THEN CONVERT(nvarchar, tArtikelAttributSprache.nWertInt)
        WHEN tFeldTyp.nDatenTyp = 1 THEN CONVERT(nvarchar, tArtikelAttributSprache.fWertDecimal)
        WHEN tFeldTyp.nDatenTyp = 2 THEN tArtikelAttributSprache.cWertVarchar
        WHEN tFeldTyp.nDatenTyp = 3 THEN CONVERT(nvarchar, tArtikelAttributSprache.dWertDateTime, 104)
    END AS [Attributwert],
    tFeldTyp.cName AS [Attributdatentyp]
FROM vStandardArtikel AS vStdA
JOIN tArtikelAttribut ON tArtikelAttribut.kArtikel = vStdA.kArtikel
JOIN tAttributSprache ON tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
JOIN tArtikelAttributSprache ON tArtikelAttribut.kArtikelAttribut = tArtikelAttributSprache.kArtikelAttribut
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp
WHERE tArtikelAttributSprache.kSprache = 0
AND vStdA.cArtNr LIKE 'PT%'
)
-- Abfrage aus der CTE über View
SELECT
    vStdA.cArtNr,
    @EigenesFeldName1 AS [Attributname1],
    (SELECT CTE.[Attributwert] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName1) AS [Wert1],
    (SELECT CTE.[Attributdatentyp] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName1) AS [Datentyp1],
    @EigenesFeldName2 AS [Attributname2],
    (SELECT CTE.[Attributwert] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName2) AS [Wert2],
    (SELECT CTE.[Attributdatentyp] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName2) AS [Datentyp2],
    @EigenesFeldName3 AS [Attributname3],
    (SELECT CTE.[Attributwert] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName3) AS [Wert3],
    (SELECT CTE.[Attributdatentyp] FROM CTE WHERE CTE.[Artikelnummer] = vStdA.cArtNr AND CTE.[Attributname] = @EigenesFeldName3) AS [Datentyp3]
FROM vStandardArtikel AS vStdA
WHERE vStdA.cArtNr LIKE 'PT%';

Solange keine Eigenen Felder identische Namen haben und tatsächlich auch immer tArtikelAttributSprache.kSprache = 0 ist, sollte das so funktionieren. Ich hoffe, ich habe die Tabellennamen überall richtig von Dir übernommen.
 
  • Gefällt mir
Reaktionen: Felix-lg

Felix-lg

Aktives Mitglied
22. November 2022
70
17
Moin! Vielen Dank für deine Mühe! Dein Code funktioniert so auf Anhieb einwandfrei :thumbsup:
Eine richtig gute Option um von der zeilenweisen Ausgabe wegzukommen!

@John Dein Tool kannte ich schon, ist auch sehr hilfreich! 😉
 
Zuletzt bearbeitet:

frankell

Sehr aktives Mitglied
9. September 2019
724
287
Flensburg
Moin! Vielen Dank für deine Mühe! Dein Code funktioniert so auf Anhieb einwandfrei :thumbsup:
Eine richtig gute Option um von der zeilenweisen Ausgabe wegzukommen!

Dein Tool kannte ich schon, ist auch sehr hilfreich! 😉
Du hast Dir ja offensichtlich mit vStandardArtikel bereits eine eigene View gebastelt. Selbiges habe ich auch gemacht, weil ich immer wieder auf bestimmte Daten zurückgreifen muss, die ich sonst nur mit diversen JOINs abfragen kann. Was bei Dir grad die Eigenen Felder sind, sind bei uns die Attribute und Merkmale. Die habe ich allesamt in eine View inkludiert, so dass ich nur noch diese View abfragen muss, die grundsätzlich auf tArtikel basiert und damit auch nur einen Record pro Artikel beinhaltet. Wird bei Deiner View wohl auch so sein (reine Vermutung).

Vielleicht ist es eine Idee auch für Dich, die Eigenen Felder zu integrieren. Das macht zwar die View etwas langsamer, aber mir hat das schon viel Zeit beim Coden erspart. :)
 

Felix-lg

Aktives Mitglied
22. November 2022
70
17
Moin!
Das mit dem View ist eine gute Idee, das werde ich im Hinterkopf behalten. Bin ich garnicht draufgekommen... Die vStandardArtikel habe ich mir nämlich nicht selbst gebaut. Die ist im Standard schon vorhanden. Das habe ich aus dem verlinkten Thread von @John!
Die StandardArtikel ist oft hilfreich...
Gruß
Felix
 
  • Gefällt mir
Reaktionen: frankell
Ähnliche Themen
Titel Forum Antworten Datum
Neu Vorlagen in Version 1.9.6.5 und Eigene Felder? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
email Vorlage eigene Felder Variable English JTL-Wawi 1.9 0
JT WAWI 1.9.6.1 Eigene Felder werden nicht mehr übertragen, bzw. gelöscht JTL-Wawi 1.9 11
Neu SQL Eigener Export - Eigene Felder im Auftrag User helfen Usern - Fragen zu JTL-Wawi 7
Neu Eigene Felder aus dem Auftrag in der Packtisch+ / WMS Ausgabe JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 4
Neu Eigene Lösung für Rechnungskauf mit Bonitäts- und Betrugsprüfung direkt im Check-out für JTL5? Plugins für JTL-Shop 0
Beantwortet Eigene Übersicht - Artikel Beschreibung im F2 Panel einbetten Eigene Übersichten in der JTL-Wawi 2
Neu Möglichkeit Variablen in Html in Eigene > Inhalte > Seiten auszugeben Allgemeine Fragen zu JTL-Shop 4
Eigene UST ID wird nicht eingetragen JTL-Wawi 1.9 9
Neu Eigene Übersicht - Artikelbestand alle Läger Eigene Übersichten in der JTL-Wawi 1
Neu Eigene Kategorien für ebay Angebote oder JTL Wawi Kategorie Baum nutzen Einrichtung und Installation von JTL-eazyAuction 1
Neu List & Label - Eigene SQL-Abfrage als Grundlage für Tabelle im Berichtscontainer? User helfen Usern - Fragen zu JTL-Wawi 10
QR-Code Formel kann nicht in die eigene Vorlage hinzugefügt werden JTL-Wawi 1.9 1
Neu JTL Shop 5.4.0 eigene Inhalte/Seiten hinzufügen nicht möglich JTL-Shop - Fehler und Bugs 5
Neu Amazon Lister 2.0 - Kategorieindividuelle Felder auf Root eben möglich, z.B. für bullet_point1-5 Amazon-Lister - Ideen, Lob und Kritik 0
Neu Leere Hersteller Felder über die Suche finden (GPSR) User helfen Usern - Fragen zu JTL-Wawi 2
GPSR Felder und Zuordnungen JTL-Wawi 1.9 3
Fehlende Felder für GPSR-relevanten Informationen? 1.9.6.4 JTL-Wawi 1.9 13
Neu Felder vom neuen Plugin importieren möglich? Shopware-Connector 0
Neu SCX (Alle Marktplätze) - habt ihr Kategorien, bei denen die Kategoriespezifischen Felder nicht laden / zuordnen nicht möglich / No Data available? Einrichtung und Installation von JTL-eazyAuction 0
Neu GPSR und Attribute User helfen Usern - Fragen zu JTL-Wawi 8
GPRS Fehler beim Rendering der Attribute JTL-Wawi 1.9 9
Neu Attribute für EWR Pflichtangaben - otto.de User helfen Usern - Fragen zu JTL-Wawi 5
Attribute für EWR Pflichtangaben (ab 13.12.2024) auf den Marktplätzen otto.de & kaufland.de Otto.de - Anbindung (SCX) 8

Ähnliche Themen