2013-12-24 3 views
-1

Мне было интересно, как я могу получить данные из таблицы3 с использованием 2 внешних ключей. Сначала я покажу вам свои таблицы, а затем попытаюсь объяснить, что я пытаюсь сделать и как я это делаю.Извлечь данные из таблицы с внешним ключом

Table1 
ID Primary key 

Table2 
ID Foreign key 
foodID Foreign Key 

Table3 
foodID Primary key 
food 

Так что я бы первым получить идентификатор в первой таблице и сравнить его с ID во второй таблице и получить foodID (обратите внимание, это соотношение является 1 ко многим, так что я могу иметь много foodIDs за ID). Затем я хочу вывести все продукты с помощью foodID. Вот пример того, что я имею в виду, потому что я не чувствую, что это слишком ясно.

Скажем, у нас есть и ID = 1 и в этом мы имеем foodID = 1 и foodID = 2 и, наконец foodID из 1 означает food = pasta и foodID 2 означает food = mince meat. Поэтому в конце я хотел бы выводить как pasta, так и mince meat.

Heres код, который я до сих пор, в приведенном выше примере это будет только выход pasta и не mince meat:

public function getFood($id){ 
     $data = $this->db->get_where('Table2', array('ID' => $id)); //Where $id is the ID in Table1 
     $Result = $data->result(); 
     foreach($Result as $row){ 
      $fID = $row->foodID; 
     } 
     $data = $this->db->get_where('Table3', array('foodID' => $fID)); 
     return($data); 
    } 

Heres мой взгляд, где я вывожу питание:

foreach($results as $row){ 
      echo $row->food; 
     } 

ответ

3

Вы просто необходимо сделать соединение:

public function getFood($id){ 
    $this->db->select('*'); 
    $this->db->from('Table3'); 
    $this->db->join('Table2', 'Table2.ID = Table3.foodID'); 
    $this->db->where('Table2.Id',$id); 

    $result = $this->db->get(); 
    return $result; 
} 
+0

Ive выскочил это в мою модель, но я получаю синтаксическую ошибку '$ result = $ this-> db-> get(); 'на этой строке не слишком уверен, почему, хотя все остальное имеет смысл. Если возможно, вы можете дать мне ссылку, чтобы прочитать о методе 'JOIN', потому что я никогда не использовал его до – user3116846

+0

Вот ссылка на код ignighter: http://ellislab.com/codeigniter/user-guide/database/active_record.html и учебное пособие по присоединениям: http://www.tutorialspoint.com/mysql/mysql-using-joins.htm –

+0

его, потому что отсутствовала полуточка, и спасибо за руководство – user3116846

Смежные вопросы