2012-06-17 124 views
1

我有两个表,我需要显示additionalcolors玩具,只有1 toypattern。例子(FW18,FK97,FK38,LX74)。我使用了从ToytypesToyadditionalcolor的左外连接,并且还执行了子查询来查找只有玩具名称的toypattern。但是我仍然无法像下面的结果查询那样得到结果。左连接SQL查询问题

请告诉我我需要修改哪部分代码才能获得与下面query1表类似的结果?

ToyTypes

ToyPattern ToyName   mainColor 
---------- --------------- --------- 
    F692   Dino    pink  
    F692   Elephant   pink   
    FK38   Elephant   pink   
    FK97   Giraffe   purple  
    FW18   Sonic   pink  
    LX73   Kangaroo   pink  
    LX73   Cow    blush  
    LX73   Dog    pink  
    LX74   Cat    plum   

ToyAdditionalColor

ToyPattern ToyName  firstColor additionalColor 
---------- ---------- ----------- ---------------- 
    FK38  Elephant pink   orange 
    FK38  Elephant pink   yellow 
    LX74  cat   plum   dark pink 
    LX74  cat   plum   pale pink 

所需的输出:

ToyPattern ToyName  color 1  color 2  color 3  color 4  color 5  
----------- ---------- ------------ ------------ ------------ ------------ ------------ 
FK38  Elephant pink   orange  yellow  NULL   NULL  
FK97  Giraffe  purple  NULL   NULL   NULL   NULL 
FW18  Sonic  pink   NULL   NULL   NULL   NULL 
LX74  cat   plum   dark pink pale pink NULL   NULL 

下面,这里是我的SQL代码。

select distinct 
    toytypes.toypattern, 
    toyname, 
    toytypes.flowerBreed, 
    toytypes.firstColor as 'color 1' 
from 
    Toytypes 
left join 
    ToyAdditionalColor on ToyAdditionalColor.toypattern = Toytypes.toypattern 
where 
    toytypes.toypattern in 
       (select Toypattern 
       from Toytypes 
       group by toypattern 
       having count(toypattern) < 2) 

回答

0

嗯我宁愿通过标准化ToyAdditionalColor成为像开始:ToyPattern,ToyName,颜色,SortOrder的。

实施例的数据会是: 'FK38', '象', '粉红',1

第二行: 'FK38', '象', '桔子',2

之后,你可以使用PIVOT - 我还没有在此刻得到了Management Studio中有我,但我认为这可能是这样的:

SELECT 
    ToyPattern 
    , ToyName 
    , 'color 1' = 1 
    , 'color 2' = 2 
    , 'color 3' = 3 
    , 'color 4' = 4 
    , 'color 5' = 5 
FROM ( 
    SELECT 
    ToyPattern 
    , ToyName 
    , SortOrder 
    , Color 
    FROM 
    dbo.ToyAdditionalColor 
) AS ToyAdditionalColor PIVOT (
    MAX (Color) FOR SortOrder IN (1,2,3,4,5) 
) AS PivotTable 
+0

嗨YS,现在的问题是我们没有假设进行规范化。是的,这些表格没有被标准化,我们被要求使用上面的表格来执行查询,并得到与desir相同的结果编辑输出。 – setiasetia

+0

但我不应该正常化这个问题的表...... – setiasetia

+0

谢谢你的提示。我想我已经得到了这个概念。谢谢! – setiasetia