mysql문 질문드립니다.
본문
답변 3
select * from (
select * from group union all select * from person
)
union 해보세요..
!-->첨부된 이미지를 참고로
group 테이블에는 idx와 course 컬럼이 있고
person 테이블에는 idx, group_idx, course 컬럼이 있다는 전제로한 예시~
person 테이블의 group_idx가 group 테이블의 idx를 참조
group 테이블과 person 테이블을 LEFT JOIN을 사용하여 조인한 후,
COALESCE(p.idx, g.idx)를 활용하여 person 테이블에 해당하는 데이터가 존재하면
이를 우선 사용하고, 없을 경우
group 테이블의 데이터를 유지하는 방식으로 데이터를 정렬.
이를 통해 group 테이블의 모든 데이터를 포함하면서,
person 테이블에서 매칭되는 group_idx 데이터를 추가하여 원하는 형태로 출력.
SQL 쿼리:
SELECT
COALESCE(p.idx, g.idx) AS idx,
g.course
FROM group_table g
LEFT JOIN person_table p
ON g.idx = p.group_idx
ORDER BY idx;
만약 person_table에 있는 course도 같이 출력하려면 다음과 같이 수정
SELECT
COALESCE(p.idx, g.idx) AS idx,
g.course,
p.course AS person_course
FROM group_table g
LEFT JOIN person_table p
ON g.idx = p.group_idx
ORDER BY idx;
$qq= sql_query("select course from group union all select course from person ");