2015-04-01 13 views
1

“表1”如何联合所有笨

$this->db->select('referral1.*, client.*, employee.* '); 
     $this->db->from('client'); 
     $this->db->join('referral1', 'client.referral_id = referral1.referral1_id', 'inner'); 
     $this->db->join('assign_psychotherapist ', 'assign_psychotherapist.a_referral_id = client.referral_id', 'inner'); 
     $this->db->join('employee ', 'assign_psychotherapist.a_psychotherapist_id = employee.empid', 'inner'); 
     $this->db->where("referral_status ='Assigned' OR referral_status ='Accepted' "); 
     $this->db->order_by("referral_date", "desc"); 

“表2”

$this->db->select('referral1.*, client.*, volunteer.* '); 
     $this->db->from('client'); 
     $this->db->join('referral1', 'client.referral_id = referral1.referral1_id', 'inner'); 
     $this->db->join('assignvolunteer', 'assignvolunteer.Vreferralid = client.referral_id', 'inner'); 
     $this->db->join('volunteer', 'assignvolunteer.Vvolunteerid = volunteer.volid', 'inner'); 
     $this->db->where("referral_status ='Assigned' OR referral_status ='Accepted' "); 
     $this->db->order_by("referral_date", "desc"); 

我怎么能这两个查询一起加入这个查询代码?

回答

0

你可以做这样的事情:

$sql = (" 
SELECT * 
FROM (
select r.referral_date,c.lastname,c.middlename,c.firstname,c.gender,r.presenting_problem,e.employee_nickname 
from client c 
inner join referral1 r 
on client.referral_id = referral.referral1_id 
inner join assign_psychotherapist ap 
on ap.a_referral_id = c.referral_id 
inner join employee e 
on ap.a_psychotherapist_id = e.empid 
where referral_status ='Assigned' OR referral_status ='Accepted' 
order by referral_date desc 
) 
union all 
SELECT * FROM 
(
select r.referral_date,c.lastname,c.middlename,c.firstname,c.gender,r.presenting_problem,v.volunteer_nickname 
from client c 
inner join referral1 r 
on c.referral_id = r.referral1_id 
inner join assignvolunteer av 
on av.Vreferralid = c.referral_id 
inner join volunteer v 
on v.Vvolunteerid = v.volid 
where referral_status ='Assigned' OR referral_status ='Accepted' 
order by referral_date desc 
) 
"); 
$this->db->query($sql); 

由于代码点火器不支持工会活动记录为2.2.1版本, 您可以使用查询字符串来达到预期的效果。

边注:当使用UNION ALL确保被连接的查询包含相同数量和列相同的定位,以实现你想要的..

您还可以使用表的别名进一步缩短查询和品牌它更有组织。

+0

有一个错误“UNION和秩序的不正确的使用情况” – Rjgapz 2015-04-01 15:42:51

+0

为确定抱歉。请检查更新后的答案,我使用过*,因为我不确切知道您将使用哪些列。 – Arzgethalm 2015-04-01 15:46:06

+0

谢谢你的帮助,但我仍然有一个错误“重复的列名” – Rjgapz 2015-04-01 16:41:19

0
SELECT * FROM 
(
    SELECT DISTINCT assessment_topic.id AS NIRUPAM, assessment_topic.name, assessment_update.* FROM 
    assessment_topic 
    LEFT JOIN assessment_update ON assessment_topic.id = assessment_update.assess_id 
    UNION 
    SELECT assessment_topic.id, assessment_topic.name, '', 9, '', '', '' 
     FROM assessment_topic 
) A 
WHERE A.school_id = 9 
GROUP BY A.name 
LIMIT 8 

// 9动态ID通和8的动态极限通