다중의 테이블에서 필요값을 하나의 테이블처럼 출력 0 2 838

by 킹초보 [SQL Query] [2020.09.10 11:28:47]


g5_city_aa  [ca_name | ca_buy | ca_info | ca_day | ca_datetime ] 

g5_city_bb  [cb_name | cb_buy | cb_line | cb_code | cb_day | cb_datetime ] 

g5_city_cc  [cc_name | cc_buy | cc_come | cc_day | cc_datetime ] 

g5_city_dd  [cd_name | cd_buy | cd_top | cd_day | cd_datetime ] 

 

위와 같이 4개의 테이블이 있습니다. 게시판을 하나의 내용으로 출력 하고 싶습니다.

컬럼명도 모두 다릅니다. 위에 작성한 컬럼명은 가져오려는 값입니다.

검색해 보니 컬럼수도 달라서 union 으로도 적합하지 않은거 같습니다.

<?php 

$sql = "시간순으로 뿌려주려 합니다. 쿼리문을 어떻게 작성해야 할지요..ㅜㅜ";

$result = sql_query($sql);

while ($row = sql_fetch_array($result)) {

}

?> 

by 마농 [2020.09.10 12:16:06]

유사한 의미의 항목끼리 묶고, 다른 의미의 항목은 Null 을 추가하는 방식으로
UNION 항목의 개수와 순서를 맞춰주면 됩니다.
모든 항목을 출력할 필요가 없다면? 공통되는 항목만 추려서 UNION 해도 되구요.
 

SELECT *
  FROM (SELECT 'ca' gb
             , ca_name, ca_buy, ca_day, ca_datetime
             , ca_info
             , null cb_line
             , null cb_code
             , null cc_come
             , null cd_top
          FROM g5_city_aa
        UNION ALL SELECT 'cb', cb_name, cb_buy, cb_day, cb_datetime, null, cb_line, cb_code,    null,   null FROM g5_city_bb
        UNION ALL SELECT 'cc', cc_name, cc_buy, cc_day, cc_datetime, null,    null,    null, cc_come,   null FROM g5_city_cc
        UNION ALL SELECT 'cd', cd_name, cd_buy, cd_day, cd_datetime, null,    null,    null,    null, cd_top FROM g5_city_dd
        ) a
 ORDER BY ca_datetime DESC
;

 


by 킹초보 [2020.09.11 05:12:36]

답변 정말 감사드립니다. 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입