쿼리 질문입니다.
본문
$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값이 포함된 데이터가 있나요?
서브쿼리 부분에서
select mb_fr from g5_fallow where mb_id = '$mb_id'
mb_fr필가 아니라. mb_id아닌가요?
WHERE mb_id IN 이조건이 mb_id 이니깐
mb_id로 해줘야 할거 같은대요
보여주신 것과 유사한 쿼리를 실행 해서 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로 한 것은 아닌가 하는 생각이 들어서 여쭤 봅니다.
저는 아래와 같이 비슷한 쿼리를 실행해 보았습니다.
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 함수에는 문제가 없는 듯 합니다.
쿼리 부분에서 문제가 없는 것 아닌가 잘 살펴 볼 필요도 있을 것 같습니다.
도움이 되어 드리지 못해 죄송합니다.