Neu Artikelverwaltung -> Attribute, eigene Felder, Merkmale anzeigen

Thomas Lisson

Administrator
Mitarbeiter
24. März 2006
15.574
300
Köln
Hi zusammen,

anbei ein SQL, das euch Attribute, eigene Felder und Merkmale des gewählten Artikels anzeigt:

Attribute, eigene Felder, Merkmale.png

SQL:
-- Attribute / Eigene Felder
SELECT
CASE
    WHEN tAttribut.nAusgabeWeg = 0 THEN 'Attribut'
    WHEN tAttribut.nAusgabeWeg > 0 THEN 'Eigenes Feld'
END AS Typ,
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 tartikel
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN tArtikelAttribut ON tArtikelAttribut.kArtikel = tArtikel.kArtikel
JOIN tAttribut ON tAttribut.kAttribut = tArtikelAttribut.kAttribut
JOIN tFeldTyp ON tFeldTyp.kFeldTyp = tAttribut.kFeldTyp
JOIN tAttributSprache ON tAttributSprache.kAttribut = tArtikelAttribut.kAttribut
    AND tAttributSprache.kSprache =
    CASE
        WHEN tAttribut.nIstMehrsprachig = 1 THEN tSpracheUsed.kSprache
        ELSE 0
    END
JOIN tArtikelAttributSprache ON tArtikelAttributSprache.kArtikelAttribut = tArtikelAttribut.kArtikelAttribut
    AND tArtikelAttributSprache.kSprache =
    CASE
        WHEN tAttribut.nIstMehrsprachig = 1 THEN tSpracheUsed.kSprache
        ELSE 0
    END   
WHERE tartikel.kArtikel = @Key

--Merkmale
UNION
SELECT  'Merkmal' AS Typ,
        tMerkmalSprache.cName AS 'Name',
        tMerkmalWertSprache.cWert AS Wert
FROM tartikel
JOIN dbo.tSpracheUsed ON nStandard = 1
JOIN tArtikelMerkmal ON tArtikelMerkmal.kArtikel = tartikel.kArtikel
JOIN tMerkmal ON tMerkmal.kMerkmal = tArtikelMerkmal.kMerkmal
JOIN tMerkmalSprache ON tMerkmalSprache.kMerkmal = tMerkmal.kMerkmal
    AND tMerkmalSprache.kSprache = tSpracheUsed.kSprache
JOIN tMerkmalWert ON tMerkmalWert.kMerkmalWert = tArtikelMerkmal.kMerkmalWert
JOIN tMerkmalWertSprache ON tMerkmalWertSprache.kMerkmalWert = tMerkmalWert.kMerkmalWert
    AND tMerkmalWertSprache.kSprache = tSpracheUsed.kSprache
WHERE tartikel.kArtikel = @Key
ORDER BY Typ, 'Name'
 

markenkoenig

Aktives Mitglied
18. November 2015
44
12
Viele Dank @Thomas Lisson. Kann mir jemand noch etwas weiter helfen? Ich möchte nur bestimmte Eigene Felder ausgeben. Alles mögliche habe ich versucht, leider fehlen die logischen Kenntnisse. :(

Wie kann ich z.B. dies etwas mehr filtern? Wo soll dieser Befehl hin? Vielleicht ist es auch falsch?

WHERE tAttribut.Sprache = Höhe OR tAttribut.Sprache = Breite

Oder auch nur aus einer bestimmten Gruppe aus der Tabelle WHERE tAttribut.cGruppeName = Maße


Vielen Dank im Voraus!
 

CaptainFrost

Sehr aktives Mitglied
29. März 2019
101
53
Viele Dank @Thomas Lisson. Kann mir jemand noch etwas weiter helfen? Ich möchte nur bestimmte Eigene Felder ausgeben. Alles mögliche habe ich versucht, leider fehlen die logischen Kenntnisse. :(

Wie kann ich z.B. dies etwas mehr filtern? Wo soll dieser Befehl hin? Vielleicht ist es auch falsch?

WHERE tAttribut.Sprache = Höhe OR tAttribut.Sprache = Breite

Oder auch nur aus einer bestimmten Gruppe aus der Tabelle WHERE tAttribut.cGruppeName = Maße


Vielen Dank im Voraus!
Das würde mich auch sehr interessieren! Kann man sich ganz bestimmte Eigene Felder anzeigen lassen?
 

Thomas_S

Sehr aktives Mitglied
2. Oktober 2012
720
122
50226 Frechern
Im Abschnitt -- Attribute / Eigene Felder die Bedingung (WHERE) anpassen/erweitern:
SQL:
WHERE tartikel.kArtikel = @Key AND tAttributSprache.cName = 'Eigenes Feld 1'

Für mehrere Eigene Felder (oder Merkmale):
SQL:
WHERE tartikel.kArtikel = @Key AND (tAttributSprache.cName = 'Eigenes Feld 1' OR tAttributSprache.cName = 'Eigenes Feld 2') -- usw.

Wer die Merkmale nicht braucht, alles ab UNION (inkl. UNION) außer die letzte Zeile (ORDER BY Typ, 'Name') löschen.
Wer nur die Merkmale haben will, genau andersrum. Alles über UNION (inkl. UNION) löschen.
 
  • Gefällt mir
Reaktionen: mediaDESIGN.SK

Firstspeedy

Aktives Mitglied
26. Juni 2019
19
2
Für mehrere Eigene Felder (oder Merkmale):
SQL:
WHERE tartikel.kArtikel = @Key AND (tAttributSprache.cName = 'Eigenes Feld 1' OR tAttributSprache.cName = 'Eigenes Feld 2') -- usw.

Hallo, kurze Frage hierzu....wenn ich auf mehrere Eigene Felder zugreifen möchte, wie mache ich das?
Den Code oben verstehe ich nicht, wie kann ich dann "Eigenes Feld 2" in der Tabelle ausgeben?

Ich möchte über alle Artikel mir nur exakt zwei bestimmte "Eigene Felder" ausgeben lassen.
Besten Dank für Eure Hilfe.
LG Oliver
 

JohnFrea

Sehr aktives Mitglied
21. September 2017
901
285
Über alle Artikel geht so nicht. Die Eigenen Übersichten wirken immer nur auf EINEN markierten Artikel.

Wenn Du die Funktion haben möchtest, geht das nur über einen individuellen Export.
 

Firstspeedy

Aktives Mitglied
26. Juni 2019
19
2
Über alle Artikel geht so nicht. Die Eigenen Übersichten wirken immer nur auf EINEN markierten Artikel.

Wenn Du die Funktion haben möchtest, geht das nur über einen individuellen Export.

Doch geht schon :) einfach bei WHERE nicht auf @Key gehen....
Mir wäre schon mit einem Beispiel Code geholfen, welcher in einer Eigenen Übersicht zwei Spalten von mir vordefinierte Eigene Felder ausgibt :)
 
Zuletzt bearbeitet:

Ähnliche Themen