2017-11-29 1 views
1

방금 ​​데이터 기반 클래스를 시작했기 때문에이 사이트가 처음이므로 기초를 배우는 중이지만 약간의 도움이 필요합니다. 그래서 이것들은 제가 가진 두 가지 문제입니다.SQL 쿼리 문제

2015 년 3 월 1 일에 점령 된 모든 아파트의 목록은 단지 및 아파트 번호 순으로 정렬됩니다. 예 결과 : 3 월 1 일 건물 및 아파트 수 예 결과으로 분류되어 2015 년 현재 임대를 가진 모든 임차인의

complexName apartmentNumber 
Fox Run  101 
Fox Run  102 
Fox Run  204 
Oak Meadows 103 
Villa Maria 11 
Villa Maria 12 

목록 : 첫 번째 문제에 대한

complexName apartmentNumber givenName familyName 
Fox Run  101    Shannon McCoy 
Fox Run  102    Larry  Thomas 
Fox Run  204    Mark  Patterson 
Oak Meadows 103    Jose  Ortiz 
Villa Maria 11    Cassie  Lee 
Villa Maria 12    Robert  Woodward 

내 SQL입니다 .. .

SELECT DISTINCT name AS 'complexName', number AS 'apartmentNumber' 
FROM week9wildwood.Complex AS c 
INNER JOIN week9wildwood.Apartment AS a ON c.complexID = a.Complex_complexID 
INNER JOIN week9wildwood.Lease AS l ON a.number = l.Apartment_number 
WHERE startDate BETWEEN '2015-03-01' AND '2016-03-01' 
ORDER BY name, number; 

하지만이 다시 점점 계속 ...

complexName apartmentNumber 
Fox Run  102 
Fox Run  103 
Fox Run  104 
Oak Meadows 102 
Oak Meadows 103 
Villa Maria 11 
Villa Maria 21 

내가 뭘 잘못하고 있는지, 왜 다른 데이터를 가지고 돌아 오는지 확실하지 않습니다. 나는 또한 첫 번째 문제에 대한 질문처럼 느껴진다. 두 번째 문제와 거의 같다. 그러나 그 말씨는 나를 망설이게 만든다. 어떤 제안이라도 대단히 감사하겠습니다!

+0

특정 날짜에 점령 된 것을 확인하려면 당신은 명확 모두를 사용해야 할 것 그들이 입주를 시작한 날짜와 그들이 끝낸 날짜 *, 그렇지 않습니까? 그리고 당신의 임의의'2015-03-01'과'2016-03-01'은 어디에서 왔습니까? 2015-01-01에 이사를하고 2015-12-31에 떠난 사람 은요? 그들은 2015-03-01에 그것을 차지하지 않을까요? –

+0

제가이 날짜를 선택한 이유는 2015-03-01을 통해 임대 계약을 맺은 사람이 포함될 것이라고 생각했기 때문입니다. 제가 학교에서 일하고있는 데이터베이스에는 2015-03-01에 시작된 아파트가 2 개 밖에 없지만 그 날짜까지 임대가 필요한 아파트가 필요합니다. – SJDub

+0

그건 임의의 날짜를 만들 이유가 없습니다. 이전 코멘트에서 첫 번째 문장을 다시 읽으십시오. –

답변

-1

그룹화를 시도 했습니까?

SELECT DISTINCT name AS 'complexName', number AS 'apartmentNumber' 
FROM week9wildwood.Complex c 
INNER JOIN week9wildwood.Apartment a 
ON c.complexID = a.Complex_complexID 
INNER JOIN week9wildwood.Lease l 
ON a.number = l.Apartment_number 
WHERE startDate BETWEEN '2015-03-01' AND '2016-03-01' 
GROUP BY 1 
ORDER BY name, number; 
+0

당신이 제안한 것을 시도해 보았습니다. 다시 complexName 아파트 이름 폭스 실행 102 오크 메도우 102 빌라 마리아 21 – SJDub

0

안된하지만 어쩌면 그냥 종료 날짜 월 15 일 큰 확인 2015 년

select name AS 'complexName', number AS 'apartmentNumber' 
from week9wildwood.Complex AS c 
inner join 
week9wildwood.Apartment AS a 
on c.complexID = a.Complex_complexID 
inner join 
week9wildwood.Lease AS l 
on a.number = l.Apartment_number 
where end_date > 2015-03-15 
ORDER BY name, number;