sql - Removing the union from a query and converted it into one query? -


i have been told remove union , change top half of query one, have been told easy cannot figure out. have been told include

where red (major colour) = red (silksname) blue (major colour) = blue (silksname) etc

select s.[silks_skey]     [dbo].[silks] s      inner join [dbo].[subcolour] sc on charindex(sc.[subcolour],s.[silksname]) <> 0     inner join [dbo].[majorcolour] mc on sc.[majorcolour] = mc.[majorcolour]      union      select s.[silks_skey], mc.[majorcolour_skey]      [dbo].[silks] s      inner join [dbo].[majorcolour] mc on charindex(mc.[majorcolour],s.[silksname]) <> 0      order s.[silks_skey] 

i see no reason why should remove union all query, best option, although move union subquery:

select  s.[silks_skey], c.[majorcolour_skey]     [dbo].[silks] s          inner join         (   select  [colour] = sc.[subcolour], mc.[majorcolour_skey]                [dbo].[subcolour] sc                     inner join [dbo].[majorcolour] mc                          on sc.[majorcolour] = mc.[majorcolour]             union             select  mc.[majorcolour], mc.[majorcolour_skey]                [dbo].[majorcolour] mc          ) c             on charindex(c.[colour], s.[silksname]) <> 0 

if have remove union use this:

select  s.[silks_skey], mc.[majorcolour_skey]     [dbo].[silks] s         left join [dbo].[subcolour] sc             on charindex(sc.[subcolour], s.[silksname]) <> 0         inner join [dbo].[majorcolour] mc             on case when sc.subcolour not null , mc.majourcolour = sc.majourcolour 1                     else charindex(mc.[majorcolour], s.[silksname]) <> 0                  end <> 0 

but cannot envisage performing better union.

note hve seen answer , opt case in join rather or, case statement shortcircuit when subcolour exists not evaluate second part, whereas or evaluate both.


Comments

Popular posts from this blog

Eclipse formatter for java ending braces -

ruby - Nesting modules inside of a Rails eninge gem -

php - Why I am getting the Error "Commands out of sync; you can't run this command now" -