Я использую класс Codeigniter Active Records, и я хочу присоединиться к таблице users
с моей таблицей clients
, чтобы я мог отображать «настоящие» имена пользователей, а не только их идентификатор.Codeigniter Присоединиться к нескольким условиям
Вот что clients
таблица выглядит (например), а столбцы a_1, a_2 и a_3 соответствуют моей users
таблице, в частности, user id
:
clients
|--------|---------|----------|-----------|----------|
| id | name | a_1 | a_2 | a_3 |
|--------|---------|----------|-----------|----------|
| 1 | Paul | 2 | 4 | 1 |
И моя users
таблица выглядит следующим образом:
users
|--------|---------|----------|
| id | first | last |
|--------|---------|----------|
| 1 | Paul | Blake |
|--------|---------|----------|
| 2 | Dan | Doe |
|--------|---------|----------|
| 3 | Steve | Smith |
|--------|---------|----------|
| 4 | Harry | Jones |
|--------|---------|----------|
Так, по существу, если бы я был выбрать из clients
таблицы и присоединиться к нему, он будет выглядеть следующим образом:
clients
|--------|---------|----------|-----------|----------|
| id | name | a_1 | a_2 | a_3 |
|--------|---------|----------|-----------|----------|
| 1 | Paul | Dane Doe |Harry Jones|Paul Blake|
До сих пор я пытался (который не работал, он просто отображает то же имя для всех):
<?
$this->db
->select('name, a_1, a_2, a_3')
->from('clients')
->join('users', 'users.id=a_1 OR users.id=a_2 OR users.id=a_3');
Любая помощь будет здорово!
Решение:
Вот что я смог придумать, с которыми работает (спасибо @elavarasan подветренной):
<?
$this->db
->select('CONCAT(u1.first," ", u1.last) as a_1_name, CONCAT(u2.first," ", u2.last) as a_2_name, CONCAT(u3.first," ",u3.last) as a_3_name', FALSE)
->from('clients')
->join('users AS u1', 'u1.id=a_1', 'left')
->join('users AS u2', 'u2.id=a_2', 'left')
->join('users AS u3', 'u3.id=a_3', 'left');
Здесь, в моей стране время почти 3 AM N Я уже чувствую себя мертвым сонливость. Дат еще одна хромая причина не конвертировать запрос в активную запись ...: P –
Спасибо! Это помогло. Я получил его для работы с использованием активных записей, см. Мое редактирование выше. – Dodinas