채택완료

다중테이블 쿼리 질문좀드릴게요

2018-04-17 (화) 20:25:55 2,717

다중테이블 쿼리 질문좀드릴게요

test게시판에서 공지사항인것만 뽑고싶은데.. 테이블2개 동시에하는건 익숙하지않아 어려움이있습니다.

test게시판에 wr_is_comment = 0 번인 것을 조건을 주고

g5_board의 test게시판에 bo_notice인것을 조건을 주어서 공지사항인것만 추출하고싶은데

이런경우 어떻게 테이블2개를 작성해야하는지 잘모르겠습니다.

제가 했던 방법은

select * FROM test UNION SELECT * FROM  g5_board  where bo_table = 'test' and bo_notice= '$wr_id'

도움좀부탁드립니다.

|

답변 3개 / 댓글 3개

채택된 답변
+20 포인트

select * FROM test A

LEFT JOIN g5_board B ON B.bo_notice=A.wr_id

이걸 원하시는 건가요??

답변에 대한 댓글 2개

답변감사합니다.. 저녁늦게 죄송합니다
해봤는데 test 테이블 모든게시물이 출력되네요..

select * FROM test A LEFT JOIN g5_board B ON B.bo_notice='A.$wr_id'
공지가 달린글은 wr_id=969번이고

test게시판의 wr_is_comment 가 0번이고
g5_board의 게시판의 bo_notice가 969번일때
969 번 게시물만나오게하고싶은데.. 제가 테이블2개를 동시에해본적없어서 잘모르겠습니다
계속 검색해보고있지만 잘풀리질 않고 있네요..
select * FROM g5_write_notice A
LEFT JOIN g5_board B ON INSTR(CONCAT(",",B.bo_notice,","),CONCAT(",",A.wr_id,","))
where B.bo_table='notice'
이렇게 해보세요..^^

select * from g5_write_test a

where a.wr_id in ( select bo_notice from g5_board b

                        where b.bo_table = 'test' )

의 쿼리로 추출가능합니다.

여러가지 방법이 있겠지만,

무난한 방법중의 하나는..

두번 쿼리를 하는 것입니다.

예를 들어,

select * from g5_write_test where wr_id in (1,2,3);

은 wr_id 가 1, 2, 3 인 게시글을 가져옵니다.

정리하여 다음과 같은 코드를 사용하면 됩니다.

Copy
$sql = "select bo_notice from g5_board where bo_table = 'test'";

$row = sql_fetch($sql);

$notice_wr_id = $row['bo_notice']; // ex. 969,970

 

$sql = "select * from g5_write_test where wr_id in (" . $notice_wr_id . ") ";

$result = sql_query($sql)

while($row = sql_fetch_array($result)) {

  echo $row['wr_id'];

  echo $row['wr_subject'];

  echo "<br>";

}

답변에 대한 댓글 1개

감사합니다

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