2017-05-09 52 views
1

在這裏我有兩個表,我想從這兩個表中得到結果。我嘗試了很多,但我無法得到確切的結果可以請任何幫助我,我在codeiniter中使用這個應用程序。如何根據電話號碼獲得兩個表中的所有值

第一表

new_staff

staff_id    firstName  Mobile   userType 

    1     Soupranjali  9986125566  Teacher 
    2     Sujata   8553880306  Teacher 

第二表

new_student

student_id   first_Name  fatherMobile  user_type 

    1     janarthan   8553880306   Student 
    2     Santanu   8277904354   Student 
    3     Sarvan   8553880306   Student 

這裏兩個表這個手機號碼存在,所以要得到兩個結果見表

預期結果

{ 
    "status": "Success", 
    "Profile": [ 
    { 
     "staff_id": "2", 
     "firstName": "Sujata", 
     "userType" : "Teacher" 
    }, 
    { 
     "student_id": "1", 
     "firstName": "janarthan", 
     "user_type" : "Student" 
    }, 
    { 
     "student_id": "3", 
     "firstName": "Sarvan", 
     "user_type" : "Student" 
    } 
    ] 
} 

所以嘗試這樣的,但我無法得到回答,請大家幫幫我,

我的模特

根據我的查詢它返回的出把這樣
public function android_memberList($mobile) 
    { 
     $this->db->select('new_staff.staff_id, new_staff.firstName, new_staff.userType, new_student.student_id, new_student.first_Name, new_student.user_type'); 
     $this->db->from('new_staff'); 
     $this->db->join('new_student', 'new_student.fatherMobile = new_staff.Mobile'); 
     $query = $this->db->get(); 

     # result_array is used to convert the data into an array 
     $result = $query->result_array(); 
     echo json_encode($result); 
    } 

,但這不是我的預期JSON fomat

[ 
    { 
    "staff_id": "2", 
    "firstName": "Sujata", 
    "userType": "Teacher", 
    "student_id": "1", 
    "first_Name": "janarthan", 
    "user_type": "Student" 
    }, 
    { 
    "staff_id": "2", 
    "firstName": "Sujata", 
    "userType": "Teacher", 
    "student_id": "2", 
    "first_Name": "Santanu", 
    "user_type": "Student" 
    } 
] 

更新答案

{ 
    "status": "Success", 
    "Profile": [ 
    { 
     "staff_id": "2", 
     "firstName": "Sujata", 
     "userType": "Teacher" 
    }, 
    { 
     "staff_id": "2", 
     "firstName": "Sujata", 
     "userType": "Teacher" 
    }, 
    { 
     "student_id": "1", 
     "first_Name": "janarthan", 
     "user_type": "Student" 
    }, 
    { 
     "student_id": "2", 
     "first_Name": "Santanu", 
     "user_type": "Student" 
    } 
    ] 
} 

回答

2
$this->db->join('new_student', 'new_student.fatherMobile = new_staff.Mobile','left'); 

請在您的代碼中替換此行並檢查,我認爲它可以正常工作,並且您可以根據需要獲取數據。

+0

你好,我想你的代碼,[ { 「staff_id」: 「2」, 「名字」: 「舒亞塔」, 「用戶類型」: 「夫子」, 「student_id數據」:「1 」, 「first_name的」: 「janarthan」, 「USER_TYPE」: 「學生」 }, { 「staff_id」: 「2」, 「名字」: 「舒亞塔」, 「用戶類型」: 「教師」 , 「student_id」:「2」, 「first_Name」:「Santanu」, 「user_type」:「學生」 }, { 「staff_id」: 「1」, 「名字」: 「Soupranjali」, 「用戶類型」: 「教師」, 「student_id數據」:空, 「FIRST_NAME」:空, 「USER_TYPE」 :null } ] –

+0

請檢查這個迴應這不是一個正確的回覆 –

+0

檢查我的預期結果 –

1

您正在使用MySQL join來合併來自2個表的數據,這永遠不會得到您想要的結果。您可以使用union合併來自這兩個表的數據。在您的情況下,問題是您的字段名在兩個表中都不相同。

解決方案1:

在SQL推廣使用alias列名,問題是你json數組,你會得到推廣鍵。

解決方案2:

試驗2個不同的查詢,在2個不同的陣列獲取數據,合併2個陣列,並得到所需的結果。我正在實施第二種解決方案。

public function android_memberList($mobile) 
{ 
    $this->db->select('distinct(new_staff.staff_id), new_staff.firstName, new_staff.userType'); 
    $this->db->from('new_staff'); 
    $this->db->join('new_student', 'new_student.fatherMobile = new_staff.Mobile'); 
    $query1 = $this->db->get(); 

    # result_array is used to convert the data into an array 
    $result_new_staff = $query1->result_array(); 

    $this->db->select('distinctnew_student.student_id), new_student.first_Name, new_student.user_type'); 
    $this->db->from('new_staff'); 
    $this->db->join('new_student', 'new_student.fatherMobile = new_staff.Mobile'); 
    $query2 = $this->db->get(); 

    # result_array is used to convert the data into an array 
    $result_new_student = $query2->result_array(); 

    $final_result=array_merge($result_new_staff,$result_new_student); 

    $result["status"] = "Success"; 
    $result["Profile"] = $final_result; 
    echo json_encode($result); 
} 
+0

先生@Bikram Pahi,我試了代碼,它工作有點好,這裏staff_id和firstName是兩次不應該來像這,請看我更新的答案 –

+0

工作人員ID和名字來dublicate –

+0

好吧,在幾分鐘內我會更新我的答案 –

相關問題