Sto utilizzando la classe Code Record Active Records e desidero unirmi alla mia tabella users
con la mia tabella clients
, in modo da poter visualizzare i nomi "reali" degli utenti e non solo il loro ID.Codeigniter Join with Multiple Conditions
Ecco ciò che il tavolo clients
assomiglia (esempio) e le colonne A_1, a_2, e A_3 corrispondono al mio users
tavolo, in particolare, il user id
:
clients
|--------|---------|----------|-----------|----------|
| id | name | a_1 | a_2 | a_3 |
|--------|---------|----------|-----------|----------|
| 1 | Paul | 2 | 4 | 1 |
E mio tavolo users
simile a questa:
users
|--------|---------|----------|
| id | first | last |
|--------|---------|----------|
| 1 | Paul | Blake |
|--------|---------|----------|
| 2 | Dan | Doe |
|--------|---------|----------|
| 3 | Steve | Smith |
|--------|---------|----------|
| 4 | Harry | Jones |
|--------|---------|----------|
Quindi, in sostanza, se fossi selezionare dalla tabella clients
e farne parte, sarebbe simile a questa:
clients
|--------|---------|----------|-----------|----------|
| id | name | a_1 | a_2 | a_3 |
|--------|---------|----------|-----------|----------|
| 1 | Paul | Dane Doe |Harry Jones|Paul Blake|
Finora, ho provato (che non ha funzionato, si visualizza solo lo stesso nome per tutti):
<?
$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');
Qualsiasi aiuto sarebbe grande!
Soluzione:
Ecco quello che ero in grado di elaborare con la quale lavori (grazie a @elavarasan lee):
<?
$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');
qui nel mio paese il tempo è quasi 03:00 n sto già sentendo morto assonnato. Un altro motivo per cui non si converte la query in record attivo ...: P –
Grazie! Questo ha aiutato. Ho avuto modo di lavorare utilizzando i record attivi, vedere la mia modifica sopra. – Dodinas