join 질문드립니다 [재질문]

join 질문드립니다 [재질문]

QA

join 질문드립니다 [재질문]

본문

 

free 자유게시판이 있는데 text 필드를 많이 추가해야 해서 
free_data 만들고 여기에 text 필드를 많이 추가했습니다
로그인한 사용자들에게는 free_data 필드를 같이 불러와서 뿌려줘야하는데요

아래처럼 테이블에 b 테이블에 필드명을 안쓰고 b.* 이렇게하니까
b에 값이 없으면 a테이블도 안나오네요
a 테이블은 무조건 다 나와야하고
b에 필드가 많아서 b.* 사용했으면 합니다

 

SELECT a.*,  b.*   
FROM g5_write_free AS a
LEFT JOIN g5_write_free_data AS b
  ON a.wr_id = b.wr_id
ORDER BY a.wr_num DESC
LIMIT 0, 10;

이 질문에 댓글 쓰기 :

답변 2

나오는 것이 정상입니다.

나오지 않는다면,
g5_write_free_data 테이블에 wr_id 칼럼이 없거나,
wr_id 칼럼의 타입이 int 가 아닐 가능성이 높습니다. 
(g5_write_free 테이블의 wr_id 칼럼 타입과 일치해야 합니다.)

$row = sql_fetch("")
이걸로 불러온다음에 echo $row['wr_id']; 찍어보니까 값이 없는데요...
echo 찍어서 보니까 b 테이블에 값이 없어서 wr_id null 이란 필드가 뒤에 생겼는데...
이럴땐 어떻게 a 테이블에 있는 wr_id 를 가져오죠?

이렇게 해보시겠어요 ? 여건상 테스트는 못해봤습니다.

 



$columnQuery = "SELECT GROUP_CONCAT(CONCAT('b.', COLUMN_NAME) SEPARATOR ', ') as column_list
                FROM INFORMATION_SCHEMA.COLUMNS 
                WHERE TABLE_NAME = 'g5_write_free_data' 
                AND TABLE_SCHEMA = '데이터베이스이름작성'";

$result = mysqli_query($conn, $columnQuery);
$row = mysqli_fetch_assoc($result);
$bColumns = $row['column_list'];

$finalQuery = "SELECT a.*, {$bColumns}
               FROM g5_write_free a
               LEFT JOIN g5_write_free_data b ON a.wr_id = b.wr_id
               ORDER BY a.wr_num DESC
               LIMIT 0, 10";

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

회원로그인

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