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
운영게시판
최근게시물
MySQL Q&A 29604 게시물 읽기
No. 29604
안녕하세요 쿼리질문 입니다.
작성자
투루로맨스(jung1873)
작성일
2010-04-05 11:32ⓒ
2010-04-05 11:35ⓜ
조회수
7,914

안녕하세여

 

질문 할 내용은

MYSQL입니다

 

테이블이

 

1. 회원사테이블(Partner)

2. 전문가 테이블(Expert)

3. AidExpert(회원사에 등록된 전문가목록테이블)

4. ARS(전문가가 등록한 음성등록 페이지 테이블)

 

회원사 테이블 컬럼 목록

===Partner===

1. siteid (고유번호) 001,002,003 순차적으로 등록됨 

2. companyname(회원사이름)

3. DelFlag 삭제유무

 

== Expert==

1. Expert(전문가 번호) 수동등록

2. Name 전문가 이름

3. ExpertId 전문가 아이디

4. FILENAME1 파일이름 1 

5. FILENAME2 파일이름 2

6. DelFlag 삭제유무

 

== AidExpert==

1. idAidExpert 고유번호(자동증가값)

2. ExpertNo(전문가 번호 Expert 테이블의 ExpertNo 참조)

3. siteid(회원사 고유번호 Partner 테이블의 siteId참조)

4. DelFlag 삭제유무

 

== ARS==

1. IDARS 고유번호(자동증가값)

2. RecFileName 제목

3. Charge 내용

4. regdate 등록일자

5. ExpertNo(전문가 번호 Expert 테이블의 ExpertNo 참조)

6. DelFlag 삭제유무

이런식으로 구성되어있습니다.

 

요구하는 쿼리는

이거는 현재 전문가가 등록한 ARS에 내용을 최신거만 1개 뽑으라고 하는 겁니다.

 

제가 쿼리를 만들었는데..

 

SELECT A.SiteId,A.CompanyName,B.ExpertNo,B.ExpertId,B.NAME,B.FILENAME1,B.FILENAME2,C.IDARS,C.RecFileName,C.Charge
FROM AideExport D
Inner Join Partner A On A.SiteId = D.Partner_SiteId AND A.DelFlag = 'N'
Inner  Join Expert B On B.ExpertNo = D.Expert_ExpertNo  AND B.DelFlag = 'N'
Inner  Join Ars C On C.Expert_ExpertNo = B.ExpertNo AND C.DelFlag = 'N'
WHERE D.DelFlag = 'N'
ORDER BY C.IDARS DESC

데이타는

 

SiteId CompanyName ExpertNo ExpertId NAME FILENAME1 FILENAME2 IDARS RecFileName Charge
0003 nanjang 789 tv tv name_070.wav name_070.wav 3 78920100404.wav  
0001 Ricoms 080 narae 성기배 name_010.wav name_010.wav 2 08020100404.wav (NULL)
0001 Ricoms 070 wontae wontae name_050.wav name_050.wav 1 07020100403.wav  

이렇게 나옵니다.

 

이 쿼리 의 문제는

 

만약 789란 번호를 가진 전문가가 이상태에서 ARS를 하나 더 등록하면

 

2개가 등록됩니다.

 

 

SiteId CompanyName ExpertNo ExpertId NAME FILENAME1 FILENAME2 IDARS RecFileName Charge
0003 nanjang 789 tv tv name_070.wav name_070.wav 8 78920103334.wav  
0003 nanjang 789 tv tv name_070.wav name_070.wav 3 78920100404.wav  
0001 Ricoms 080 narae 성기배 name_010.wav name_010.wav 2 08020100404.wav (NULL)
0001 Ricoms 070 wontae wontae name_050.wav name_050.wav 1 07020100403.wav  

 그룹바이 절을 써도 마찬가지입니다.

 

SELECT A.SiteId,A.CompanyName,B.ExpertNo,B.ExpertId,B.NAME,B.FILENAME1,B.FILENAME2
, MAX(C.IDARS) IDARS,C.RecFileName,C.Charge
FROM AideExport D

Inner Join Partner A On A.SiteId = D.Partner_SiteId AND A.DelFlag = 'N'
Inner  Join Expert B On B.ExpertNo = D.Expert_ExpertNo  AND B.DelFlag = 'N'
Inner  Join Ars C On C.Expert_ExpertNo = B.ExpertNo AND C.DelFlag = 'N'
WHERE D.DelFlag = 'N'
GROUP BY A.SiteId,A.CompanyName,B.ExpertNo,B.ExpertId,B.NAME
,B.FILENAME1,B.FILENAME2,C.RecFileName,C.Charge
ORDER BY C.IDARS DESC

 

SiteId CompanyName ExpertNo ExpertId NAME FILENAME1 FILENAME2 IDARS RecFileName Charge
0003 nanjang 789 tv tv name_070.wav name_070.wav 8 78920103334.wav  
0003 nanjang 789 tv tv name_070.wav name_070.wav 3 78920100404.wav  
0001 Ricoms 080 narae 성기배 name_010.wav name_010.wav 2 08020100404.wav (NULL)
0001 Ricoms 070 wontae wontae name_050.wav name_050.wav 1 07020100403.wav  

똑같습니다.

 

 

이렇게 나오면 안됩니다...

SiteId CompanyName ExpertNo ExpertId NAME FILENAME1 FILENAME2 IDARS RecFileName Charge
0003 nanjang 789 tv tv name_070.wav name_070.wav 8 78920103334.wav  
0001 Ricoms 080 narae 성기배 name_010.wav name_010.wav 2 08020100404.wav (NULL)
0001 Ricoms 070 wontae wontae name_050.wav name_050.wav 1 07020100403.wav  

위의 표와 같이

IDARS 8이 나와야 합니다. 3은 나올필요 없습니다.

IDARS 3이 같이 나오면 안됩니다.

IDARS 는 ARS의 고유넘버 입니다.

 

8이라는 것은 최신데이터를 의미하는 겁니다.

 

한마디로 전문가가  등록한 ARS의 최신데이터 1개만을 가져오는 겁니다.

 

쿼리 수정좀 부탁드립니다.

 

MYSQL입니다

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

 이상하네요, GROUP BY SiteId, ExpertNo 정도면 충분히 원하는 결과을 얻으실 것 같습니다만, 보여주신 결과는 그와는 다르네요. 일단 character 컬럼은 보이는 것과 실제 내용이 다를 수 있으므로, 명백하게 다른 SiteId,ExpertNo 만을 대상으로 그룹핑 해보시는 것이 좋겠습니다.

박현우(lqez)님이 2010-04-05 15:16에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29607mysql dynamic cursor 사용가능한가요? [1]
김기철
2010-04-05
9084
29606mysql 미러링을 할때.. [2]
이하사
2010-04-05
8490
29605다중값 쿼리 질문 [1]
김광수
2010-04-05
7431
29604안녕하세요 쿼리질문 입니다. [1]
투루로맨스
2010-04-05
7914
29603varchar로 된 숫자를 정렬하려고 합니다. [2]
김현호
2010-04-02
7566
29602조건에 맞는 데이타만 쿼리로 저장하는 방법을 알려주세요. [1]
황혁
2010-04-01
7434
29601쿼리가 가능한지 [1]
김성민
2010-04-01
6967
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다