JOINS in sql scenario -


i newbie sql joins. have 2 tables

version

vid, vname, isactive 1    v1     1 2    v2     0 3    v3     1 

sub-version

svid,vid,  vname 1     1     0.1 2     1     0.2 3     2     0.1 

in above tables each version has many sub-version's .

i need fetch results above tables output should this.

vid, vname, isactive, subversionexists(bit) 1    v1      1        1 2    v2      0        1 3    v3      1        0 

in above result set column name "subversionexists" represents if version has subversion records in sub-version table.

hope explains problem scenario well.

thanks in advance.

here version without joins, using exists (select ... ) returns boolean value:

http://sqlfiddle.com/#!5/712bd/9

select   version.vid, version.vname, version.isactive,   exists (     select null subversion subversion.vid = version.vid   ) subversionexists version; 

or, if sql engine doesn't convert booleans 0/1, can use case:

select   version.vid, version.vname, version.isactive,   case when     exists (select null subversion subversion.vid = version.vid)   1 else 0 end   subversionexists version 

another version left join + group by, if don't want use count():

select   version.vid, version.vname, version.isactive,   case when subversionvids.vid not null        1 else 0 end   subversionexists      version left join (   select   subversion.vid       subversion   group subversion.vid ) subversionvids   on subversionvids.vid = version.vid; 

or can use distinct instead of group by:

select   version.vid, version.vname, version.isactive,   case when subversionvids.vid not null        1 else 0 end   subversionexists      version left join (   select distinct subversion.vid              subversion ) subversionvids   on subversionvids.vid = version.vid; 

Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -