2017-10-02 4 views
0

J'ai trois tables dans ma base de données Joomla que je veux interroger pour combiner, puis commander par date, mais je ne comprends pas complètement comment utiliser le join function in joomla.Joindre ensemble 3 tables de base de données

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' 

Je voudrais sélectionner tous les articles de la table de contenu qui ont CatID 23, et se combinent avec la webdiffusion et table conférences, puis trier les résultats par date afin que j'ai une table comme ceci:

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' 

Les choses compliquent encore (je pense) la différence de formats de date entre les tables. Comment former une requête en utilisant Jdatabase pour combiner et interroger mes 3 tables?

Répondre

0


utilisation ci-dessous requête vous obtiendrez le résultat

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

Et ci-dessous est la requête mysql brute pour obtenir le résultat

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