我有3张桌子:
tArtikelAttribut :
kArtikelAttribut | kArtikel | kAttribut
---------------------------------------
97974 | 33 | 117
97975 | 33 | 122
tArtikelAttributSprache
kArtikelAttribut | cWertVarchar
-------------------------------
97974 | black
97975 | bla
tAttributSprache
kAttribut | cName
------------------
117 | Farbe
122 | Saison
我的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"));
输出
kArtikel | Farbe | Saison
-------------------------
33 | black | black
33 | bla | bla
我需要这个
kArtikel | Farbe | Saison
-------------------------
33 | black | bla
遗憾的是我没有解决方法
答案 0 :(得分:0)
如果您查看代码如下:
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
您的结果将是:
kArtikelAttribut | kArtikel | kAttribut | cWertVarchar | cName
-------------------------------------------------------------------------
97974 | 33 | 117 | black | Farbe
97975 | 33 | 122 | bla | Saison
所以如果你想要发布的结果,你必须转过cName并选择max(cWertVarchar)
答案 1 :(得分:0)
由于
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