2015-10-09 41 views
1

一对多关系我有两个表:显示数据 - 一个在笨

Table 1 -- rps_users: 

id 
membership_number 
family_name 
first_name 
email_address 
staff (staff column having values Y and N) 

Table 2 -- rps_volunteer_score: 
volunteer_id 
registration_assessor 
interviewer 
professional_registration_advisor 

在第一表中的id列包含如在第二表中的列volunteer_id相同的值。 每个用户可能有多个registration_assessor,interviewerprofessional_registration_advisor值。这些列的可能值为0-4

我想做些什么浏览器记录具有价值N用户在staff柱的格式像这样显示:

membership_number:000 
family_name:Name1 
first_name:Name2 
email_address:[email protected] 
Type:Interviwer/Assessor/Registrar/PRA/Moderator(If the user have multuple role display all ie, Interviewer,Assessor) 

类型列条记录基于follwing条件

if($interviewer!="" && $interviewer <= 4)echo "Interviewer"; 
    if($registration_assessor !="" && $registration_assessor >= 2 &&  $registration_assessor <= 4)echo "Assessor"; 
    if($registration_assessor !="" && $registration_assessor >= 3 && $registration_assessor <= 4)echo "Moderator"; 
    if($registration_assessor !="" && $registration_assessor == 4) echo "Registrar"; 
    if($professional_registration_advisor !="" && $professional_registration_advisor== 1)echo "PRA"; 

这是我的模特功能

public function get_volunteers_list($condition) 
{ 

    $this->db->select("u.id,u.membership_number,u.family_name,u.first_name,u.email_address,vs.volunteer_id,vs.registration_assessor, vs.interviewer,vs.professional_registration_advisor"); 
    $this->db->from(self::$tbl_name . " as u"); 
    $this->db->join(Volunteer_score::$tbl_name . " as vs", "u.id = vs.volunteer_id","left"); 
    $this->db->where($condition); 
    $query = $this->db->get(); 
    return $query->result(); 

} 

这是我的控制器代码

$volunteer_list = $this->Users->get_volunteers_list(array("u.staff"=>'N')); 
    $this->data["volunteer_list"] = $volunteer_list; 

这是我的看法代码

<?php 
     if($volunteer_list) 
     { 
     foreach($volunteer_list as $volunteer) 
     { 

      echo "<td>{$volunteer->membership_number}</td>"; 
echo "<td>{$volunteer->family_name}, {$first_name}</td>"; 
echo "<td>{$volunteer->email_address}</td>"; 
echo "<td>";(Here i want to display the type of the user) 
//Following is the condition for "TYPE" 
/*if($interviewer!="" && $interviewer <= 4) 
{ 
    echo "Interviewer"; 


} 

if($registration_assessor !="" && $registration_assessor >= 2 && $registration_assessor <= 4) 
{ 
    echo "Assessor"; 


} 
if($registration_assessor !="" && $registration_assessor >= 3 && $registration_assessor <= 4) 
{ 
    echo "Moderator"; 


} 
if($registration_assessor !="" && $registration_assessor == 4) 
{ 
    echo "Registrar"; 


} 
if($professional_registration_advisor !="" && $professional_registration_advisor == 1) 
{ 
    echo "PRA"; 


}*/ 
echo"</td>"; 
echo "</tr>"; 
     } 
     } 
     ?> 
+0

但是你正在从volunteer_score获取比你显示更多的信息.​​..'u.id,u.members hip_number,u.family_name,u.first_name,u.email_address,vsvolunteer_id,vs.registration_category,vs.registration_assessor,vs.interviewer,vs.professional_registration_advisor'你可以在你真正想要的字段中使用组合并,你最终会带有逗号分隔的“类型”列表的单个记录 –

回答

1

组装SQL可能看起来像:

SELECT u.id, u.membership_number, u.family_name, u.first_name, u.email_address, 
GROUP_CONCAT(vs.registration_category) AS type 
FROM volunteers_list as u 
LEFT JOIN Volunteer_score as vs ON(u.id = vs.volunteer_id) 
GROUP BY u.id; 

,你会得到一列由逗号分隔registration_categorys