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

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

linux - Does gcc have any options to add version info in ELF binary file? -

java - Are there any classes that implement javax.persistence.Parameter<T>? -