sql문 질문

sql문 질문

QA

sql문 질문

본문

 

SELECT * FROM

( SELECT *, 'Free' as board_is FROM es_bd_Free 

UNION ALL

SELECT *, 'Sharing' as board_is FROM es_bd_Sharing  )

b LEFT JOIN es_boardscrap s ON b.sno = s.bdsno WHERE 1 and s.memNo= 3806

 

이런 SQL 문이 있습니다..

(고도몰...)

 

es_ boardscrap 테이블은

위 es_bd_Sharing 게시판과 es_bd_Free 게시판에 글을 스크랩한것들은 모아두는 테이블 입니다.

문제는 

예를들어 sharing게시판의 sno가 5인 게시물을 스크랩했는데,

출력되기로는 free게시판의 sno가 5일 게시물도 같이 출력이 됩니다 ㅠ

뭐가 잘못된걸까요?ㅠ

 

 

 

 

 

[es_boardscrap 테이블]

1891193659_1615355055.3429.png

[es_bd_free & es_bd_sharing 테이블의 일부]

1891193659_1615355221.068.png

 

 

이 질문에 댓글 쓰기 :

답변 2

es_boardscrap 테이블에 bdsno 말고 어느 테이블의 데이터인지는 구분하는 값이 없나요?

bdId 가 있습니다! ㅠ

그런데 free나 sharing 게시시판에는 bdId가 없습니다 ㅠ
대신
SELECT *, 'Sharing' as board_is
요런식으로 해놨습니다...


and s.bdId = board_is
이렇게 조건문을 추가 하니깐 됐습니다!! ㅎ

es_ boardscrap 테이블에

 

스크랩을 할 기준점인 free 와  sharing 에 대한 구분자가 존재해야 합니다.

그것이 숫자로 구분해서 적용하더라도 상관은없으나

sno는 동일한 게시물의 키값이라 , 추가 구분자가 있거나

별도의 키를 구성해야 하는데 후자는 당자 어렵고, 

스크랩에 어떤게시물테이블인지를 넣어야죠

답변을 작성하시기 전에 로그인 해주세요.
전체 123,594 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT