объединение таблицы кодирования - PullRequest
9 голосов
/ 17 мая 2011

Я хочу отобразить таблицу user и таблицу users_profiles в 1 таблице: Я хочу связать их обоих так, чтобы usrpID = usrID,

До этого процесса я пытался отобразить только таблицу пользователей, используя этот код, и она прекрасно работает.

Контроллер:

$data['query'] = $this->db->query('SELECT * FROM users_profiles');
$this->load->view('users/users_view',$data);

Вид:

<?php foreach($query->result_array() as $row): ?>
        <tr class="even gradeC">
            <td><?php echo $row['usrID']</td>
            <td><?php echo $row['usrName'];?></td>
        </tr>
<? endforeach; ?>

но когда я пытаюсь соединить две таблицы, мне выдается ошибка: это мой код

$this->db->select('users.usrID, users_profiles.usrpID');
$this->db->from('users', 'users_profiles');
$this->db->join('users', 'users.usrID = users_profiles.usrpID');
$result = $this->db->get();

таблица пользователей имеет поля, такие как имя пользователя, пароль и т. Д., И у каждого пользователя есть свой профиль в таблице users_profiles

users           users_profiles

users tableusers_profiles table

РЕДАКТИРОВАТЬ Я пытался выбрать поля, но когда я попробовал это

<td><?php echo $row['usrID'];?></td>
            <td><?php echo $row['usrName'];?></td>
            <td><?php echo $row['usrpFirstName'].' '.$row['usrpLastName'];?></td>
            <td><?php echo $row['usrpBday'];?></td>
            <td><?php echo $row['usrpSex'];?></td>
            <td><?php echo $row['usrpAddress'];?></td>    

возвращает первое значение в профилях пользователей, в котором оно не должно

Ответы [ 2 ]

25 голосов
/ 17 мая 2011
Таблица

users была в обеих функциях from и join, поэтому в итоге вы объединяете 3 таблицы: users, users и users_profiles -> первые 2 имеют одно и то же имя -> ошибка уникальности / таблица псевдонимов .

Попробуйте это (присоединиться к [users в from] на [users_profiles в join]):

$this->db->select('users.usrID, users_profiles.usrpID')
         ->from('users')
         ->join('users_profiles', 'users.usrID = users_profiles.usrpID');
$result = $this->db->get();

EDIT:

пример:

Чтобы получить users_profiles userpNick столбец:

$this->db->select('users.usrID, users_profiles.userpNick')
         ->from('users')
         ->join('users_profiles', 'users.usrID = users_profiles.usrpID');
$query = $this->db->get();

вид:

<?php foreach($query->result() as $row): ?>
        <tr class="even gradeC">
            <td><?php echo $row->usrID</td>
            <td><?php echo $row->userpNick;?></td>
        </tr>
<? endforeach; ?>
2 голосов
/ 20 ноября 2014

Вы можете сослаться на этот пример результата соединения между сотрудником и таблицей адресов.

function getEmployees(){
  $this->db->select("trn_employee.EMPLOYEE_ID,trn_employee.FIRST_NAME,trn_employee.LAST_NAME,trn_employee.EMAIL,trn_address.ADDRESS_LINE,trn_address.CITY");
  $this->db->from('trn_employee');
  $this->db->join('trn_address', 'trn_address.employee_id = trn_employee.employee_id');
  $query = $this->db->get();
  return $query->result();
 }
...