2016-11-23 5 views
0

Ich verwende CodeIgniter und versuchen, Daten von MySQL abzufragen.Abfrage von Daten aus SQL-Tabelle, wo Referenz in einer anderen Tabelle ist

Szenario - Angemeldete Benutzer-Manager und will Daten für sein Team ziehen ..

Erklärung -

e_users Tisch

|user_id | name | manager_id 
--------------------------------- 
|1  | test | 10 
|2  | another | 1 
|3  | testX | 1 
|4  | testY | 2 
|5  | testX | 2 

e_details Tisch

|det_id | detail | user_id 
--------------------------------- 
|1  | sdfs | 1 
|2  | xcffgdf | 2 
|3  | sdfsd | 3 
|4  | etret | 5 
|5  | cvbcvb | 5 
Jetzt

wenn User_id 1 als Manager angemeldet ist, sollte er erhalten Daten von det_id -2,3 nur,

e_details Tabelle haben Daten, und ich will nur die Daten der Nutzer abgefragt werden, wo deren Manager derzeit angemeldet . Means Manager wird Daten von Benutzern aus e_details Tabelle ziehen.

e_details Tisch haben user_id, detail_comment, details_date ...

und e_users user_id haben, manager_id, ...

ich unten Funktion versucht, aber ich nicht benötigten Daten bekommen könnten

$user_id = $this->session->userdata('user_id') 
public function get_method($user_id) 
{ 
    $this->db->join('e_users', 'e_users.manager_id = e_details.user_id','INNER'); 
    $this->db->where('e_details.user_id',$user_id); 
    return $this->db->get('e_details')->result_array(); 
} 

Ich denke, ich muss zwei Tabellen verbinden und dann mit gemeinsamen Schlüsselwert suchen?

Danke,

+0

@VishalParkash helfen, i-Daten empfangen, aber nicht der Benutzer, deren Manager angemeldet, bekam aber eigene Datenmanager, bedeutet dies nur die aktuellen Anmeldebenutzer abgefragt, nicht vollständige Team von Manager – rjcode

+0

die e_details Tabelle enthält auch andere Daten des Benutzers ?? – VishalParkash

+0

Überprüfen Sie und versuchen Sie meine Antwort. Es würde das Problem – VishalParkash

Antwort

2

gut, wenn ich es richtig bin immer Sie die Select-Anweisung übersehen haben. Dies würde Sie

<?php 
     public function get_method($user_id){ 
    $query = $this->db->select('e_users.*, e_details.*') 
      ->from('e_users') 
      ->join('e_details', 'e_users.user_id = e_details.user_id', 'inner') 
      ->where('e_users.manager_id',$user_id) 
      ->get(); 
    if($query -> num_rows() > 0){ 
     $details_array = $query->result(); 
     print_r($details_array);die; 
     $response['details_array'] = $details_array; 
     return $response; 
    }else{ 
     return false; 
    } 
} 
?> 
+0

Ich möchte e_users nicht abfragen, sondern Daten von e_details abrufen, und nur die Daten von Benutzern sollten von e_details stammen, wobei der angemeldete Benutzer der Manager dieser Benutzer ist. Entschuldigung, wenn ich ihn nicht richtig erklären könnte. – rjcode

+0

es funktioniert, danke, – rjcode

+0

@rjcode: wirklich ... funktioniert es? Ich habe den Code gerade aktualisiert. Bitte überprüfen Sie ,, Das ist was Sie suchen .. – VishalParkash

Verwandte Themen