Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询内部联接_Sql_Sql Server 2008 - Fatal编程技术网

SQL查询内部联接

SQL查询内部联接,sql,sql-server-2008,Sql,Sql Server 2008,我正在使用SQLServer2008R2。 我有两张桌子,我们说TblGroup和TblComplatedDetails TblGroup包含组的名称以及MemberId和GroupType,即Daily、Weekly、Start、End和TblComplatedDetails包含GroupId,即TblGroup的外键以及完成的日期时间。 现在,我只需要在TblCompletedDetails中没有记录的情况下,才需要所有特定MemberId的组,GroupType=End和Start类型的组

我正在使用SQLServer2008R2。 我有两张桌子,我们说TblGroup和TblComplatedDetails

TblGroup包含组的名称以及MemberId和GroupType,即Daily、Weekly、Start、End和TblComplatedDetails包含GroupId,即TblGroup的外键以及完成的日期时间。 现在,我只需要在TblCompletedDetails中没有记录的情况下,才需要所有特定MemberId的组,GroupType=End和Start类型的组除外。因此,记录集如下所示:

TblGroup 
==================================
Id  MemberId    GroupType
==================================
1   1       Daily
2   2       Daily
3   3       Daily
4   1       Weekly
5   1       Start
6   2       Weekly 
7   2       Start 
8   2       End
9   1       End
10  1       End


TblCompletedDetails
======================================
Id  GroupId     CompletedDate
======================================
1   1       xxxxxxxxxxxxxx
2   2       xxxxxxxxxxxxxx
3   3       xxxxxxxxxxxxxx
4   4       xxxxxxxxxxxxxx
5   1       xxxxxxxxxxxxxx
6   2       xxxxxxxxxxxxxx
7   3       xxxxxxxxxxxxxx
8   5       xxxxxxxxxxxxxx
9   6       xxxxxxxxxxxxxx
因此,对于MemberId=1,所需的组可以是:

=======
GroupId
=======
1
4
但对于MemberId=2,期望的结果是:

=======
GroupId 
=======
2
6
7
因为7是在TblCompletedDetails中没有外键的组的开始类型。
有人知道吗?等待您有价值的回复。

您可能需要使用TblGroup grp 1。grp.GroupType不在“End”2中。grp.GroupType='Start'并从TblCompletedDetails tcd中选择count*,其中grp.GroupId=tcd。GroupId@NaveenBabu在这种情况下,我将只获取组的开始类型的记录。我想要所有类型的组,除了End类型和start类型的组,TblCompledDetails中不能有记录。
select g.ID GroupID
  from TblGroup g
 where g.MemberID = @MemberID
   and g.GroupType <> 'end'
   and
   (
       -- Row is qualified if it is not start
          g.GroupType <> 'start'
       -- Or, if it is, does not have an entry in TblCompletedDetails
       or not exists (select *
                        from TblCompletedDetails d
                       where d.GroupId = g.ID)
   )