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 칼럼 타입과 일치해야 합니다.)
이렇게 해보시겠어요 ? 여건상 테스트는 못해봤습니다.
$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";
답변을 작성하시기 전에 로그인 해주세요.