将3个数据库表连接在一起

时间:2017-10-02 02:07:17

标签: php mysql joomla

我在Joomla数据库中有三个表,我想要查询它们,然后按日期排序,但我不完全了解如何使用join function in joomla

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'

我想从内容表中选择包含catid 23的所有文章,并与网络广播和会议表结合,然后按日期排序结果,以便我有一个这样的表:

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' 

更复杂的事情(我认为)是表格之间日期格式的差异。如何使用Jdatabase组合查询我的3个表?

1 个答案:

答案 0 :(得分:0)


使用以下查询,您将获得结果

return (T) conv.ConvertFromString(string.IsNullOrWhiteSpace(value) ? "0" : value);

以下是获取结果的原始mysql查询

$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();