테스트 사이트 - 개발 중인 베타 버전입니다

매칭 쿼리문 질문입니다.. 채택완료

발렌슈테인 4년 전 조회 2,819

iBNeer님과 마르스컴퍼니님 도움으로 하나를 더 배웠는데 여기서 궁금한게 있습니다

sql = "SELECT B.wr_1, B.wr_2, B.wr_4, A.* FROM g5_write_testa A inner join g5_write_testb B on B.wr_1 = A.wr_1 and B.wr_2 = A.wr_2 and B.wr_4 = A.wr_4 where A.wr_1 <> '' and A.wr_2 <> '' and A.wr_4 <> ''";
$res = sql_query($sql);
for($i=0;$list=sql_fetch_array($res);$i++){
echo "A - wr_id=> ".$list['wr_id']."<br>"; 

echo "A - wr_subject=> ".$list['wr_subject']."<br>";

echo "A - wr_content=> ".$list['wr_content']."<br>";

이렇게 하고 글을 작성하면 맞게 출력이 되는데 그런데 한번더 글을 을 작성하면 처음 과 두번째 글내용에 서로 2개의 내용이 출력됩니다
예)
testb에서 1번글 작성 수박 사과 
글내용 --> 수박 사과

testb에서 2번 글 작성 바나나 복숭아
1번 글내용 --> 바나나 복숭아
                    수박 사과
2번 글내용 --> 바나나 복숭아
                    수박 사과

 

1번 하고 2번하고는 연관이 없는데 글내용안에는 다 같이 보이는걸 봐서는 어딘가 잘못인데 어딘지 잘모르겠습니다...

아무래도 배우는 입장이라서 그런지 많이 어렵긴합니다 order by 와 limit 를 해도 잘안되고....

조금만 쉽게 알려주실 선생님을 기다리겠습니다...

 

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

답변 2개

채택된 답변
+20 포인트
4년 전

sql = "
  SELECT B.wr_1, B.wr_2, B.wr_4, A.* 
    FROM g5_write_testa A 
           inner join g5_write_testb B on B.wr_1 = A.wr_1 and B.wr_2 = A.wr_2 and B.wr_4 = A.wr_4 
   WHERE A.wr_id = '{$wr_id}'
";

 

$row = sql_fetch($sql);


echo $row['wr_subject'];
echo $row['wr_content'];

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

답변에 대한 댓글 1개

발렌슈테인
4년 전
감사합니다

저는 다른방법으로 해결했는데 이런방법도 있군요 참고하겠습니다!!

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

i
4년 전

위 sql 문은

A 의 wr_1, wr_2, wr_4  

B 의 wr_1, wr_2, wr_4

가 동일한거면 가져오기 라는 내용으로 이해하시면 됩니다.

1개 비교가 아닙니다 전체 데이터입니다.

전체 데이터에서 wr_1, wr_2, wr_4 가 같은것 가져오기 입니다.

 

따라서

A 에 1개, B 에 2개 (wr_1,wr_2,wr_4 동일) 이라면 총 3개가 불러지겠죠

 

원하시는 기능을 좀더 세분화 하거나 구조적으로 변경하셔야 할것 같습니다.

 

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

답변에 대한 댓글 1개

발렌슈테인
4년 전
친절한 설명 감사합니다

어제 채택을 드려서 이번에는 마르스컴퍼님께 드렸어요 ㅠㅠ

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

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

로그인