게시판 글 리스트와 파일 리스트 select 할때 문제 0 4 753

by 성수다 [MySQL] [2021.09.10 09:55:17]


안녕하세요 게시판 작업중인데 a테이블(게시글) b테이블(첨부파일)이 존재하는데, a테이블에 인덱스 넘버랑 b테이블에 외래키값으로 조인해서 데이터를 가져오고 있습니다.

근데 b테이블에 첨부파일 데이터가 존재하지 않을때 는 게시글 까지 select가 안되는 상황입니다. 이럴땐 어떻게 해야 할까요 아래는 현재 쿼리문입니다.

SELECT 	p.PRE_IDX,
		p.PRE_TITLE,
		p.PRE_CONTENT,
		p.PRE_NOTICE_FLAG,
		p.PRE_READ_CNT,
		p.PRE_REG_DT,
		p.PRE_UDT_ID,
		p.PRE_DEL_YN,
		p.PRE_USE_YN,
		af.ATACH_IDX,
		af.ATACH_TYPE,
		af.ATACH_DIS_ID,
		af.ATACH_SORT,
		af.ATACH_ORGN_NM,
		af.ATACH_SAVE_FILE_NM,
		af.ATACH_SAVE_FILE_PATH,
		af.ATACH_EXT,
		af.ATACH_SIZE,
		af.ATACH_REG_DT,
		af.ATACH_UDT_DT,
		af.ATACH_REG_ID,
		af.ATACH_UDT_ID,
		af.ATACH_DEL_YN,
		af.ATACH_USE_YN
	FROM TH_PRE p
	INNER JOIN TH_ATACH_FILE af  ON (af.ATACH_DIS_ID = p.PRE_IDX )
	WHERE af.ATACH_TYPE = 'pre'
	AND af.ATACH_DEL_YN = 'N'
    GROUP BY af.ATACH_DIS_ID 
	ORDER BY p.PRE_REG_DT DESC

예를들어 게시글이 3개가 있을때

글-1 ,  파일 있음 ,   - 셀렉O

글-2  , 파일 없음  - 셀렉 x

글-3 , 파일 있음, -셀렉O

 

여기서 글 1,3만 가져오고,  글2를 가져오지 못하는상황입니다

결론은 파일 첨부가 없을때에도 게시글을 select 하고 싶습니다. 도와주세요!! 

 

by 모래가흙흙 [2021.09.10 13:24:28]

INNER JOIN -> LEFT OUTER JOIN 이거 원하시는거죠?


by 성수다 [2021.09.10 13:57:30]

그것도 생각했었는데 b테이블에 데이터가 아예 존재하지 않아서 조회가 되지 않습니다.

다른 방법이 있나요?


by 샤랄라 [2021.09.10 16:08:57]
SELECT *
FROM TH_PRE p LEFT OUTER JOIN 
     TH_ATACH_FILE af  
ON (af.ATACH_DIS_ID = p.PRE_IDX 
    AND af.ATACH_TYPE = 'pre'
    AND af.ATACH_DEL_YN = 'N')
WHERE 1=1
GROUP BY af.ATACH_DIS_ID 
ORDER BY p.PRE_REG_DT DESC

 


by 마농 [2021.09.13 10:05:44]

1. 원하는 결과를 얻으려면
- 아우터 조인을 해야 합니다.
- af. 으로 된 조건들을 Where 절이 아닌 On 절에 적어야 합니다.
2. Group By 구문이 이상합니다.
- 그룹바이 구문이 표준에 어긋납니다.
- 그룹바이가 필요 없어 보입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입