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
Post a Comment