0

다음 쿼리의 결과가 필요합니다. SQL Server : WHERE 절이 작동하지 않는 INNER JOIN이 작동하지 않습니다.

ALTER PROCEDURE [dbo].[ASASearchMed] 
(
    @Endorsed Varchar(200), 
    @Authorized Varchar(200), 
    @Notes Varchar(200), 
    @LastName Varchar(50), 
    @FirstName Varchar(50), 
    @MiddleName Varchar(50) 
) 
AS 
    SELECT 
    ASA.ASAID 
    , ASA.ProID 
    , PRO.LastName 
    , PRO.FirstName 
    , PRO.MiddleName 
    , ASA.ASAType 
    , ASA.Endorsed 
    , ASA.Authorized 
    , ASA.Notes 
    , ASA.DateReg 
    , ASA.DateMod 
    , ASA.UserReg 
    , ASA.UserMod 
    FROM 
    dbo.ASA 
    INNER JOIN 
    dbo.PRO ON ASA.ProID = PRO.ProID 
    WHERE 
    ASA.ASAType = 'Medical' 
    AND NULLIF(ASA.MedGLCtrlNo, '') IS NULL OR ASA.MedGLCtrlNo = '' 
    AND (ASA.Endorsed LIKE '%' + @Endorsed + '%' OR 
      ASA.Authorized LIKE '%' + @Authorized + '%' OR 
      ASA.Notes LIKE '%' + @Notes + '%' OR 
      PRO.LastName LIKE '%' + @LastName + '%' OR 
      PRO.FirstName LIKE '%' + @FirstName + '%' OR 
      PRO.MiddleName LIKE '%' + @MiddleName + '%') 

내가 이것을 실행하려고

, 그것도 실행되지 않은 것처럼 보이는 나는 아무것도 없어하지만 난 Management Studio에서 쿼리를 시도 할 때 문제가 지속.

Medical이라는 태그가 지정된 레코드로 검색을 필터링하려고하는데 NULL 또는 '' 빈 문자열이 있고 아래의 각 필드에 표시된 데이터와 일치해야합니다. 검색

Public Sub Search() 
     Dim StrSQL As String = "ASASearchMed" 
     cLib = New clsLibrary 
     cLib.openConnection(strConnection) 
     If Not cLib.isConnectionOpen() Then 
      Exit Sub 
     End If 
     cLib.initializeCommand(StrSQL) 
     cLib.addParameter("@Endorsed", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text) 
     cLib.addParameter("@Authorized", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text) 
     cLib.addParameter("@Notes", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text) 
     cLib.addParameter("@LastName", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text) 
     cLib.addParameter("@FirstName", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text) 
     cLib.addParameter("@MiddleName", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text) 
     objCommand.ExecuteNonQuery() 
     lview.Items.Clear() 
     DisplayData() 
    End Sub 

과 어떻게 목록보기

Public Sub DisplayData() 
     Dim objDataReader = objCommand.ExecuteReader 
     While objDataReader.Read 
      Dim listview As New ListViewItem 
      With listview 
       .Text = objDataReader.Item("ASAID") 
       .SubItems.Add(objDataReader("ProID")) 
       .SubItems.Add(objDataReader("LastName")) 
       .SubItems.Add(objDataReader("FirstName")) 
       .SubItems.Add(objDataReader("MiddleName")) 
       .SubItems.Add(objDataReader("ASAType")) 
       .SubItems.Add(objDataReader("Endorsed")) 
       .SubItems.Add(objDataReader("Authorized")) 
       .SubItems.Add(objDataReader("Notes")) 
       .SubItems.Add(objDataReader("DateReg")) 
       .SubItems.Add(objDataReader("DateMod")) 
       .SubItems.Add(objDataReader("UserReg")) 
       .SubItems.Add(objDataReader("UserMod")) 
      End With 
      lview.Items.Add(listview) 
     End While 
    End Sub 

에 출력을 표시하기위한

내 코드입니다.

Public Sub LoadData() 
     Dim StrSQL As String = "ASAViewMed" 
     cLib = New clsLibrary 
     cLib.openConnection(strConnection) 
     If Not cLib.isConnectionOpen() Then 
      Exit Sub 
     End If 
     cLib.initializeCommand(StrSQL) 
     objCommand.ExecuteNonQuery() 
     lview.Items.Clear() 
     DisplayData() 
    End Sub 

누군가 나를 도울 수 있거나 계몽 할 수 있기를 바랍니다. 미리 감사드립니다!

+0

where 절을 제거하고 얻은 것을 확인하십시오 (관리 스튜디오 사용). 그런 다음 범인을 찾을 때까지 where 절 테스트를 하나씩 추가하십시오. –

+0

안녕하세요 @rontornambe, 전에 시도하고 여전히 문제가 무엇인지 찾을 수 없습니다. –

+0

그래서 where 절이없는 조인은 이제 행을 반환합니까? –

답변

1

AND (ASA.MedGLCtrlNo IS NULL OR ASA.MedGLCtrlNo = '') 

확인을 시도해보십시오()이 예에서 전반적인 당신의 WHERE 절에 너무 그룹화.

+0

이것은 트릭을! 고마워. –