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개

채택된 답변
+20 포인트

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

bdId 가 있습니다! ㅠ

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


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

댓글을 작성하려면 로그인이 필요합니다.

es_ boardscrap 테이블에

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

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

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

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

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고