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