쿼리 질문입니다.

쿼리 질문입니다.

QA

쿼리 질문입니다.

본문

$sql = sql_query("SELECT * FROM g5_write_barcode WHERE mb_id IN (select mb_fr from g5_fallow where mb_id = '$mb_id')"); 

 

select 문에 서브쿼리로 조건을 만족하는 쿼리문인데요.

 

밖에 있는 select 문과 안에 있는 select 문을 따로 돌리면 각각 제가 원하는 값이 들어오는데 서브쿼리로 넣으면 아무런 값도 들어오지 않습니다.... 혹시 그누보드5 에서 쿼리문을 돌릴때 문법이 틀린건가요???

이 질문에 댓글 쓰기 :

답변 4

아 그렇게 된다면 상관이 없습니다. 

그러면 서브쿼리에서

select mb_fr from g5_fallow where mb_id = '$mb_id'

여기에서 출력하는 데이터 mb_fr값들중

SELECT * FROM g5_write_barcode 테이블 mb_id값이 포함된 데이터가 있나요?

 

 

네 ㅎ 서브쿼리를 따로 빼서 확인도 해본결과 2개나 있는걸로 확인했습니다. ㅠ_ㅠ

$result = sql_num_rows($sql); 구문을 사용해서 돌려보면 0 이상이면 글들이 출력되게 if 문을 사용해 놨는데 ... 아무것도 출력이 안됩니다... ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 제가 봤을때는 result 에 0값도 안들어오는것 같습니다...

서브쿼리 부분에서

select mb_fr from g5_fallow where mb_id = '$mb_id'

mb_fr필가 아니라. mb_id아닌가요?

WHERE mb_id IN  이조건이 mb_id 이니깐

mb_id로 해줘야 할거 같은대요 

mb_id는 글 작성하는 사람의 id 이고 mb_fr은 팔로우한 사람의 id 입니다. 저 쿼리는 제가 팔로우 한 사람의 아이디를 서브쿼리에서 받아서 글테이블에 작성자 아이디가 같은 것을 찾는 문법입니다. 그래서 mb_id가 들어가면 성립할수가 없어요 ㅠㅠ g5_fallow 테이블에서 저와 같은 아이디를 조건으로 찾은다음 팔로우한 사람의 id를 찾고 있습니다 ㅠㅠㅠㅠㅠ mb_id 랑 mb_fr이랑 칼럼명은 달라도 들어있는 값이 같으면 저 구문에서는 상관없는거 아닌가요 ㅠㅠ???

보여주신 것과 유사한 쿼리를 실행 해서 sql_fetch_array로 fetch해서 루프 돌리며, 결과 출력해 보았는데, 결과가 잘 나타납니다.

 

혹시나 해서 말씀 드리면,

 

("SELECT * FROM g5_write_barcode WHERE mb_id IN (select mb_fr from g5_fallow where mb_id = '$mb_id')"에서  

서브쿼리 상에 테이블을 명시해 주고 한 번 테스트 해 보시죠.

즉,

$sql = sql_query("SELECT * FROM g5_write_barcode WHERE g5_write_barcode.mb_id IN (select g5_fallow.mb_fr from g5_fallow where g5_fallow.mb_id = '$mb_id')"); 

이렇게 해 보시기 바랍니다.

 

그리고, 테이블 명이 g5_fallow 가 맞는 것이지요? follow로 만드시고 fallow로 한 것은 아닌가 하는 생각이 들어서 여쭤 봅니다.


 

$sql = sql_query("SELECT * FROM g5_write_barcode WHERE g5_write_barcode.mb_id IN (select g5_fallow.mb_fr from g5_fallow where g5_fallow.mb_id = '$mb_id')");
$result = sql_num_rows($sql);
for($i=0; $row=sql_fetch_array($sql);$i++){
}

바꿔서 해봣는데 안되네요 ... ㅠㅠ result에 값이 하나도 안들어옵니다. echo $result 로 확인해봤는데도 값이 안들어오네요 ... 민망하지만 테이블은 fallow 가 맞습니다. 오타가 있었는데 귀차니즘으로 아직 손을 안댔거든요... ㅋㅋㅋㅋ

저는 아래와 같이 비슷한 쿼리를 실행해 보았습니다.

 

SELECT * FROM g5_write_**** WHERE g5_write_****.mb_id IN (SELECT mb_id FROM g5_member WHERE g5_member.mb_level =  10) 

 

for 구문에서 

$row['mb_id'], $row['wr_id'], $row['wr_subject'] 등을 출력하면,

제대로 출력이 되었습니다.

 

즉, sql_query 함수에는 문제가 없는 듯 합니다.

쿼리 부분에서 문제가 없는 것 아닌가 잘 살펴 볼 필요도 있을 것 같습니다.

 

도움이 되어 드리지 못해 죄송합니다.

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

회원로그인

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