2017-10-02 9 views
0

Joomla 데이터베이스에 3 개의 테이블을 결합한 다음 날짜순으로 정렬하려고하지만, join function in joomla을 사용하는 방법을 완전히 이해하지 못했습니다.3 개의 데이터베이스 테이블 합치기

Table 1: __content 
id , created, title, state, catid 
'1' , '2010-01-01 00:00:00' , 'ContentTitle' , '1' , '23' 
'2' , '2014-03-01 00:00:00' , 'ContentTitle2' , '1' , '20' 

Table 2: __webcasts 
id, eventdate, title, state 
'1' , '2015-03-01' , 'WebcastTitle' , '1' 

Table 3: __conferences 
id, eventdate, title, state 
'1' , '2012-05-01' , 'ConferenceTitle' , '1' 

내가 23 CATID 한 내용 테이블의 모든 기사를 선택하고, 웹 캐스트 및 컨퍼런스 테이블과 결합, 그리고 내가 같은 테이블을 가질 수 있도록 다음 날짜별로 결과를 정렬 것 :

id, created-eventdate, title, state 
'1' , '2015-03-01' , 'WebcastTitle' , '1' 
'1' , '2012-05-01' , 'ConferenceTitle' , '1' 
'1' , '2010-01-01 00:00:00' , 'ContentTitle' , '1' 

더 복잡한 것은 (내가 생각하기에) 테이블 간의 날짜 형식의 차이입니다. 3 개의 테이블을 결합하고 쿼리하기 위해 Jdatabase를 사용하여 쿼리를 어떻게 구성합니까? 쿼리 아래

답변

0


사용 아래

$q2 
    ->select('id , event_date As date, title, status') 
    ->from('webcasts') 
    ; 
$q1 
    ->select('id , event_date As date, title, status') 
    ->from('conferences') 
    ; 
$query 
    ->select('id , created_date As date, title, status') 
    ->from('content') 
    ->where('catid = 23') 
    ->union($q1) 
    ->union($q2) 
    ->order('id ASC, date desc') 
    ; 
$result = $db->setQuery($query)->loadObjectList(); 

그리고이 결과를 얻을 수있는 원시 MySQL의 쿼리 인 결과를 얻을 수

SELECT a.id AS id, a.created_date AS date, a.title, a.state FROM (SELECT id, created_date, title, state FROM content WHERE catid = 23) AS a 
UNION ALL 
SELECT id, event_date As date, title, state FROM webcasts 
UNION ALL 
SELECT id, event_date As date, title, state FROM conferences 
order by id asc, date desc