database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 1929 게시물 읽기
No. 1929
3일째 고생하는 쿼리 ㅠㅠ
작성자
임종훈(jjonghoon82)
작성일
2005-04-28 20:09
조회수
2,461

운영체제 : Windows 98/XP/2000/2003
SQL Server : 2000

rent_info 테이블에는
idx s_date d_date car_idx service_local
1 2005-04-16 2005-04-30 1 강서구점
2 2005-04-02 2005-05-01 3 강서구점
3 2005-04-02 2005-05-02 3 강서구점
4 2005-04-30 2005-05-05 3 강서구점

car_have 테이블에는
idx car_idx car_have service_local
2 1 2 강서구점
4 3 3 강서구점
8 4 2 강서구점


각 각 위와 같이 들어 있습니다.

select car_idx, count(car_idx) from rent_info
where service_local = '강서구점'
and datediff(day,'2005-05-03' , d_date ) < 0 group by car_idx

이런 쿼리를 써서 5월 3일기준으로 대여가 가능한 차량번호(car_idx)와
각각 몇개씩(count(car_idx)) 들어 있는지를 검색 했더니

car_idx count
1 1
3 2

이런 결과과 나왔거든요 여기까지는 해결 했는데

저 결과와 rent_info의 car_idx 가 4번인 데이터를 합쳐야 하는데요

car_idx count
1 2
3 2
4 2
이런 결과를 나오게 해야 하는데 도무지 모르겠네요

누가제발좀 알려 주세요 ㅠㅠ

이 글에 대한 댓글이 총 1건 있습니다.

설명이 넘 어렵네여.. ^^;;

제가 제대로 이해한 건지 모르겠지만..

원하는 답안이 이런 것이 아닐까 싶네요..

 

그럼, 아래 샘플을 참조하세여~

 

create table rent_info (
  idx int
, s_date datetime
, d_date datetime
, car_idx int
, service_local varchar(40)
)
go

 

insert into rent_info values (1, '2005-04-16', '2005-04-30', 1, '강서구점')
insert into rent_info values (2, '2005-04-02', '2005-05-01', 3, '강서구점')
insert into rent_info values (3, '2005-04-02', '2005-05-02', 3, '강서구점')
insert into rent_info values (4, '2005-04-30', '2005-05-05', 3, '강서구점')
go

 

create table car_have (
  idx int
, car_idx int
, car_have int
, service_local varchar(40)
)
go

 

insert into car_have values (2, 1, 2, '강서구점')
insert into car_have values (4, 3, 3, '강서구점')
insert into car_have values (8, 4, 2, '강서구점')
go

 

select * from rent_info
select * from car_have

 

select h.car_idx, h.car_have - isnull(u.used_car, 0)
  from car_have h
          left outer join
         (select car_idx, count(car_idx) as used_car
               from rent_info
               where service_local = '강서구점'
                   and datediff(day,'2005-05-03' , d_date ) >= 0
               group by car_idx) u
          on h.car_idx = u.car_idx

 

drop table rent_info
drop table car_have

 

길가는 나그네..님이 2005-04-28 21:33에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1933int 타입과 char 타입 중 검색속도가 빠른것은? [4]
푸훗
2005-04-29
3658
1931설치시 서버에 연결이 되지 않는 다면서 설치가 안됩니다.
박종석
2005-04-29
2286
1930SQL교과서에 수록된 문제 [1]
김인태
2005-04-29
1983
19293일째 고생하는 쿼리 ㅠㅠ [1]
임종훈
2005-04-28
2461
1928아랫글에.. 다시 INSERT ~ SELECT 문에 관하여.. [3]
KKY
2005-04-28
2005
1927INSERT ~ SELECT 문에서.. 이런게 되나여? [3]
kky
2005-04-28
2184
1925두 테이블의 합집합 구하기 [3]
쿼리
2005-04-28
2906
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다