2013-01-08 2 views
0

계속 구문 오류가 발생합니다.repeater 테이블에서 중복 행을 방지하려면 어떻게합니까?

* 키워드 'SELECT'근처에 구문이 잘못되었습니다. ')'

근처의 구문이 잘못되었습니다. *

내가 어디에 존재에 대한 올바른 형식을 사용하고 절을 존재하는 곳에 사용.

SELECT 
    tblLoadMaster.Salesperson, tblLoadMaster.LoadID, LoadRate, 
    PayBetween1, Paybetween2, 
    tblLoadMaster.BillingID, OriginationCity, OriginationState, 
    DestinationCity, DestinationState 
FROM tblLoadMaster 
WHERE EXISTS (SELECT tblCarrier.CompanyName, tblCarrier.CarrierID 
       FROM tblCarrier 
       WHERE tblLoadMaster.CarrierID = tblCarrier.CarrierID) 
    AND EXISTS (SELECT tblCustomer.CompanyName, tblCustomer.Customerflag, tblCustomer.CustomerID, tblCustomer.AddressLine1, tblCustomer.City, tblCustomer.State, tblCustomer.Zipcode, tblCustomer.CompanyPhoneNumber, tblCustomer.CompanyFaxNumber, tblCustomer.SCAC 
       FROM tblCustomer 
       WHERE tblCustomer.CustomerID = tblLoadMaster.CustomerID) 
    AND EXISTS(SELECT StopLocationID FROM tblLoadStop 
      WHERE tblLoadMaster.LoadID = tblLoadStop.LoadID) 
    AND EXIST(SELECT StopLocationCompanyName 
      FROM tblStoplocation 
      WHERE tblStopLocation.StoplocationID = tblLoadStop.StoplocationID 
       AND tblLoadMaster.Phase LIKE '%4%') 
ORDER BY 
    tblCarrier.CarrierID DESC; 

업데이트

내가 대신 INNER JOIN 문을 사용하지만 여전히 중복 행을 얻을. tblLoadStop 테이블은 stoplocation IDload ID으로 stoplocation 정보를 가져 오는 내 찾아보기 테이블입니다. tblLoadstop 표 중계기 후 만 LoadID는 동일 인 테이블로 두 번 행을 표시 회

LoadStopID(pk) LoadID  StopLocationID 
476   13521    67  
477   13521   106 

LOADID 포함한다.

여기 내 INNER JOIN 문입니다.

SELECT 
    tblCarrier.CarrierID, tblLoadMaster.Salesperson, tblCustomer.CompanyName, 
    tblCarrier.CompanyName, tblCustomer.Customerflag, tblCustomer.CustomerID, 
    tblCustomer.AddressLine1, tblCustomer.City, tblCustomer.State, 
    tblCustomer.Zipcode, tblCustomer.CompanyPhoneNumber, 
    tblCustomer.CompanyFaxNumber, tblCustomer.SCAC, StopLocationCompanyName, 
    tblLoadMaster.LoadID,LoadRate,PayBetween1, Paybetween2 , tblLoadMaster.BillingID, 
    OriginationCity, OriginationState, DestinationCity, DestinationState 
FROM 
    tblLoadMaster 
INNER JOIN 
    tblCarrier On tblLoadMaster.CarrierID = tblCarrier.CarrierID 
INNER JOIN 
    tblCustomer ON tblCustomer.CustomerID = tblLoadMaster.CustomerID 
INNER JOIN 
    tblLoadStop ON tblLoadMaster.LoadID = tblLoadStop.LoadID 
INNER JOIN 
    tblLkupCarrierLoad ON tblLkupCarrierLoad.CarrierID = tblCarrier.CarrierID 
INNER JOIN 
    tblStoplocation ON tblStopLocation.StoplocationID = tblLoadStop.StoplocationID 
WHERE 
    tblLoadMaster.Phase LIKE '%4%' 
ORDER BY 
    tblCarrier.CarrierID DESC; 
+0

깨진 대문자 잠금 키가 무엇입니까? – Alex

+1

마지막 EXISTS에 대해서는 EXIST를 입력했습니다. – Rhumborl

+1

SQL을 형식화하여 읽기 쉽도록 배웁니다. – Almo

답변

0

이 존재가 아니라 아래 EXISTS 말 : 는

"SELECT 
    tblLoadMaster.Salesperson, tblLoadMaster.LoadID, 
    LoadRate, PayBetween1, Paybetween2 , tblLoadMaster.BillingID, 
    OriginationCity,OriginationState, DestinationCity, DestinationState 
FROM 
    tblLoadMaster "+ 
"WHERE 
    EXISTS (SELECT 
        tblCarrier.CompanyName,tblCarrier.CarrierID 
      FROM 
        tblCarrier 
      WHERE 
        tblLoadMaster.CarrierID =tblCarrier.CarrierID)" + 
"AND 
    EXISTS(SELECT 
        tblCustomer.CompanyName, tblCustomer.Customerflag, 
        tblCustomer.CustomerID, 
        tblCustomer.AddressLine1, tblCustomer.City, tblCustomer.State, 
        tblCustomer.Zipcode, tblCustomer.CompanyPhoneNumber, 
        tblCustomer.CompanyFaxNumber, tblCustomer.SCAC 
      FROM 
        tblCustomer 
      WHERE 
        tblCustomer.CustomerID=tblLoadMaster.CustomerID)" + 
"AND EXISTS(SELECT 
        StopLocationID 
      FROM 
        tblLoadStop 
      WHERE 
        tblLoadMaster.LoadID=tblLoadStop.LoadID) 
    AND **EXISTS**(SELECT 
         StopLocationCompanyName 
        FROM 
         tblStoplocation 
        WHERE 
         tblStopLocation.StoplocationID=tblLoadStop.StoplocationID 
         AND 
         tblLoadMaster.Phase LIKE '%4%') 
        ORDER BY 
         tblCarrier.CarrierID DESC;"); 
+2

문제가 무엇인지에 대한 환상적인 설명에 감사 드리며 문제를 해결하기 위해 무엇을했는지 ... – RhysW

+1

설명하기 전에 게시글을 클릭했습니다. 정직합니다! -doh- –

+1

: 난 단지 내가 구문 오류 수정을 가지고 있지만 내가 errorThe 여러 부분으로 구성된 식별자를 얻고 이유를 알고 바인딩 수 없습니다 "tblLoadStop.StoplocationID"하지 않는 XD – RhysW

1

어쩌면 대신

SELECT tblLoadMaster.Salesperson, tblLoadMaster.LoadID,LoadRate,PayBetween1, Paybetween2 , tblLoadMaster.BillingID, OriginationCity,OriginationState, DestinationCity, DestinationState 
FROM tblLoadMaster 
WHERE EXISTS 
    (SELECT tblCarrier.CompanyName,tblCarrier.CarrierID FROM tblCarrier WHERE tblLoadMaster.CarrierID =tblCarrier.CarrierID) 
AND EXISTS 
    (SELECT tblCustomer.CompanyName, tblCustomer.Customerflag, tblCustomer.CustomerID, tblCustomer.AddressLine1, tblCustomer.City, tblCustomer.State, tblCustomeripcode, tblCustomer.CompanyPhoneNumber, tblCustomer.CompanyFaxNumber, tblCustomer.SCAC FROM tblCustomer WHERE tblCustomer.CustomerID=tblLoadMaster.CustomerID) 
AND EXISTS 
    (SELECT StopLocationID FROM tblLoadStop WHERE tblLoadMaster.LoadID=tblLoadStop.LoadID) 
AND EXISTS 
    (SELECT StopLocationCompanyName FROM tblStoplocation WHERE tblStopLocation.StoplocationID=tblLoadStop.StoplocationID AND tblLoadMaster.Phase LIKE '%4%') 
ORDER BY tblCarrier.CarrierID DESC; 
을 "EXIST"로 기록되는 "EXISTS"마지막에 오타 (변경은 굵게 표시되어 있습니다)

현재 사용중인 데이터베이스가 확실하지 않지만 exist 절에서 "select one from table"을 사용하는 것을 선호합니다.

SELECT tblLoadMaster.Salesperson, tblLoadMaster.LoadID,LoadRate,PayBetween1, Paybetween2 , tblLoadMaster.BillingID, OriginationCity,OriginationState, DestinationCity, DestinationState 
FROM tblLoadMaster 
WHERE EXISTS 
    (SELECT 1 FROM tblCarrier WHERE tblLoadMaster.CarrierID =tblCarrier.CarrierID) 
AND EXISTS 
    (SELECT 1 FROM tblCustomer WHERE tblCustomer.CustomerID=tblLoadMaster.CustomerID) 
AND EXISTS 
    (SELECT 1 FROM tblLoadStop WHERE tblLoadMaster.LoadID=tblLoadStop.LoadID) 
AND EXISTS 
    (SELECT 1 FROM tblStoplocation WHERE tblStopLocation.StoplocationID=tblLoadStop.StoplocationID AND tblLoadMaster.Phase LIKE '%4%') 
ORDER BY tblCarrier.CarrierID DESC; 

이 방법이 더 예뻐하지 그것은 당신이 바로 당신이 뭔가를 돌려주는 경우 알고 싶은 것을 알고, 선택된 열은 전혀 중요하지 않습니다, 더 읽기 보인다?

+0

구문 오류 수정을 받았지만 왜 오류가 발생하는지 모르겠습니다. 다중 부분 식별자 "tblLoadStop.StoplocationID"를 바인딩 할 수 없습니다. 멀티 파트 식별자 "tblCarrier.CarrierID"를 바인딩 할 수 없습니다. INNER JOIN을 사용하여 중복 행을 가져 오지 않고이 테이블을 함께 결합하려고하기 때문에 왜 작동하지 않는지 알 수 없습니다. – Alex

관련 문제