2016-10-10 1 views
0

Ich habe 3 Tabellen:Erhalten Sie Werte aus einer Spalte in zwei Spalten

tArtikelAttribut:

kArtikelAttribut | kArtikel | kAttribut 
--------------------------------------- 
    97974  |  33 | 117 
    97975  |  33 | 122 

tArtikelAttributSprache

kArtikelAttribut | cWertVarchar 
------------------------------- 
    97974  | black 
    97975  | bla 

tAttributSprache

kAttribut | cName 
------------------  
    117 | Farbe 
    122 | Saison 

My SQL:

SELECT 
    tArtikelAttribut.kArtikel, 
    tArtikelAttributSprache.cWertVarchar AS Farbe, 
    tArtikelAttributSprache.cWertVarchar AS Saison 
FROM 
    (tArtikelAttributSprache 
INNER JOIN 
    tArtikelAttribut ON tArtikelAttributSprache.kArtikelAttribut = tArtikelAttribut.kArtikelAttribut) 
INNER JOIN 
    tAttributSprache ON tArtikelAttribut.kAttribut = tAttributSprache.kAttribut 
GROUP BY 
    tArtikelAttribut.kArtikel, tArtikelAttributSprache.cWertVarchar, 
    tArtikelAttributSprache.cWertVarchar, tAttributSprache.cName 
HAVING 
    (((tAttributSprache.cName) = "Farbe" OR 
     (tAttributSprache.cName) = "Saison")); 

Ausgabe

kArtikel | Farbe | Saison 
------------------------- 
    33 | black | black 
    33 | bla | bla 

Ich brauche diese

kArtikel | Farbe | Saison 
------------------------- 
    33 | black | bla 

ich leider

+2

Für welche RDBMS ist das? Bitte fügen Sie ein Tag hinzu, um anzugeben, ob Sie 'mysql',' postgresql', 'sql-server',' oracle' oder 'db2' verwenden - oder etwas ganz anderes. –

+0

Willkommen bei StackOverflow: Wenn Sie Code, XML oder Datenbeispiele posten, ** bitte ** markieren Sie diese Zeilen im Texteditor und klicken Sie auf die Schaltfläche "Codebeispiele" ('{}') auf der Editor-Werkzeugleiste, um formatieren und Syntax markieren Sie es! –

+0

Ihr Beispiel ist ungültig (Standard) SQL, deshalb ist es wichtig, dass Sie uns mitteilen, welches DBMS Sie verwenden. –

Antwort

0

keinen Lösungsansatz haben Wenn Sie Ihren Code aussehen :

SELECT 
    a.kArtikel, 
    aas.cWertVarchar, 
    cName 
FROM 
    tArtikelAttribut a INNER JOIN 
    tArtikelAttributSprache aas ON 
    aa.kArtikelAttribut = aas.kArtikelAttribut INNER JOIN 
    (SELECT 
     kAttribut, 
     cName 
    FROM 
     tAttributSprache 
    WHERE 
     s.cName IN("Farbe" ,"Saison")) s ON 
    a.kAttribut = s.kAttribut 

Ihre Ergebnisse wäre:

kArtikelAttribut | kArtikel | kAttribut | cWertVarchar | cName 
------------------------------------------------------------------------- 
    97974  |  33 | 117    | black | Farbe 
    97975  |  33 | 122    | bla  | Saison 

so, wenn Sie die Ergebnisse, die Sie geschrieben wollten, würden Sie über cName schwenken müssen und wählen Sie das max (cWertVarchar)

0

Dank

 
SELECT * 
FROM (
SELECT 
    a.kArtikel AS Identnummer, 
    aas.cWertVarchar, 
    cName 
FROM 
    tArtikelAttribut a INNER JOIN 
    tArtikelAttributSprache aas ON 
    a.kArtikelAttribut = aas.kArtikelAttribut INNER JOIN 
    (SELECT 
     kAttribut, 
     cName 
    FROM 
     tAttributSprache 
    WHERE 
     cName IN ('Farbe' ,'Saison')) s ON 
    a.kAttribut = s.kAttribut 
) AS s 
PIVOT 
(
MAX(cWertVarchar) FOR cName IN (Farbe ,Saison) 
) AS pvt 
Verwandte Themen