2014-11-30 3 views
0

JOIN 절을 실험하기 시작 했으므로 gridview의 여러 테이블에서 데이터를 표시 할 수 있습니다. 그러나 나는 내 인생이 내 실수가 무엇인지 알기가 어렵다. 나는 불린 테이블의 순서를 바꾸려고 노력했다. 이것은 내가 생각하기에, 일에 가장 가깝다. 나는 진술을 얻을 수있다. 이것은 근본적으로 작동하는 성명서의 똑 바른 사본이지만 여전히 효과가 없습니다.FROM 절 (JOIN)의 SQL - 구문 오류

도움을 주시면 감사하겠습니다. (코드에 VB.Net을 사용하고 있는데 데이터베이스에 문제가있을 수 있으며 구문에 대해 매우 까다 롭습니다. VS30으로 개발 중입니다.)

@tim : 요청대로 여기에 전체 하위 있습니다.

Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click 
    If cbSearchType.Text = "Guest Surname" Then 

     Dim searchSQL As String = "SELECT bookings.bookingStartDate, bookings.bookingEndDate, guests.guestFirstName, guests.guestSurname, locations.locationName FROM bookings JOIN guests ON guests.guestID = bookings.guestID JOIN locations ON locations.locationID = bookings.locationID WHERE guests.guestSurname = @guestSurname" 

     Dim searchCommand = New OleDbCommand(searchSQL, globalVariables.objConnection) 
     Dim searchAdapter As New OleDbDataAdapter(searchSQL, globalVariables.objConnection) 
     Dim searchDataTable As New DataTable 

     searchCommand.Parameters.AddWithValue("guestSurname", tbSearchTextBox.Text) 
     searchAdapter.SelectCommand = searchCommand 
     searchAdapter.Fill(searchDataTable) 

     globalVariables.objConnection.Open() 
     searchAdapter.Fill(searchDataTable) 
     gvSearchResults.DataSource = searchDataTable 
     globalVariables.objConnection.Close() 

    ElseIf cbSearchType.Text = "Location" Then 

    ElseIf cbSearchType.Text = "Booking Start Date" Then 

    ElseIf cbSearchType.Text = "Booking End Date" Then 

    End If 
End Sub 

액세스에서

+0

"구문 오류 FROM 절에" – tvellalott

+0

은'수 있습니다 "... WHERE guests.guestSurnmae = '"+ @guestSurname + "'"- 즉, guestSurname'는'경우 char 또는 varchar 필드를 사용하려면 작은 따옴표 '' '로 인용해야합니다. 다른 하나는 키워드 ('FROM','WHERE' 등) 사이에 공백이 있다는 것입니다. 사용중인 실제 VB.NET 코드를 게시 할 수 있습니까? – Tim

+0

더 이상 Access에서 작업하지 마십시오.하지만 아마도''Parameters.AddWithValue'에서''guestSurname'' 대신''@guestSurname''을 사용하고 싶을 것입니다. 100 % 확실하지 않은 액세스는 명명 된 매개 변수를 지원합니다. 디버거를 단계별로 실행하고 'OleDbCommand'의 텍스트가 무엇인지 보시고, 매개 변수를 추가 한 후 - 그것이 맞는지 아닌지 보여줄 것입니다. – Tim

답변

1

최종 클래스, 당신은 INNER JOIN을 지정해야합니다. 조인이 여러 개인 경우에도 괄호가 필요합니다. I는이를 작성합니다

SELECT b.bookingStartDate, b.bookingEndDate, g.guestFirstName, g.guestSurname, l.locationName 
FROM (bookings as b INNER JOIN 
     guests as g 
     ON g.guestID = b.guestID) INNER JOIN 
    locations as l 
    ON l.locationID = b.locationID 
WHERE g.guestSurname = @guestSurname; 
+0

내 gridview에 어떤 이유로 중복 된 결과가 나타나는 것을 제외하고는 완벽하게 작동합니다. – tvellalott

+0

어쨌든 searchAdapter.Fill (searchDataTable)을 두 번 사용했습니다. – tvellalott