2012-09-15 3 views
0

누군가이 코드의 문제점을 알려주십시오. 기본적으로 내가하려고하는 것은 이름이 아닌 ID를 기반으로 임차인을 식별하는 것입니다 (이름이 같은 임차인이 더 많은 경우). 고맙습니다.쿼리 제한

SELECT DISTINCT P.PROPERTYId, P.PROPERTYName, T.TYPEName 
FROM RENTAL R, PROPERTY P, TYPE T 
Group by P.PROPERTYId, P.PROPERTYName, T.TYPEName 
HAVING RENTERId = (SELECT RENTERId FROM RENTER 
WHERE RENTERFirstName = 'AL' 
AND RENTERLastName = 'SMITH') 
AND R.PROPERTYId = P.PROPERTYId 
AND P.TYPEId = T.TYPEId 
AND T.TYPEName = 'VILLA'; 
+0

일부 출력 또는 오류 메시지를 제공해주십시오. –

+0

Nitpick -'WHERE' 절에서 축소 된 교차 조인 대신 올바른 내부 조인을 보게됩니다. – Oded

답변

2

대신 사용해보십시오. 테이블이 join 구문을 사용하여 연결되고, where 절은 필터링을 위해 예약 방법

SELECT DISTINCT 
    Renter.RenterID, 
    Property.PropertyId, 
    Property.PropertyName, 
    Type.TYPEName 
FROM Rental 
    inner join Property on Rental.PropertyID = Property.PropertyID 
    inner join Type on Property.TypeID = Type.TypeID 
    inner join Renter on Rental.RenterID = Renter.RenterID 
where Type.TypeName = 'villa' 
and Renter.RenterFirstName = 'al' 
and Renter.RenterLastName = 'smith' 

참고.

+0

당신은'GROUP BY'을 삭제 한 것 같습니다. – Oded

+0

예. 집계가 없으므로 구별이 잘 될 것입니다. – podiluska

+0

감사합니다 podiluska,하지만 쿼리가 작동한다고 생각하지 않습니다. 나는 아직도 therr이 어떤 경우에는 같은 이름의 임차인이 둘 이상 있습니다. –

0

사용해보기. 바꾸기 = IN.