我使用Codeigniter活動記錄類,我想加入我的users
表和我的clients
表,以便我可以顯示用戶的「真實」名稱,而不僅僅是他們的ID。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點ñ我已經死了的感覺昏昏欲睡。 Dats沒有將查詢轉換爲活動記錄的另一個蹩腳原因... P –
謝謝!這有幫助。我使用Active記錄工作,看到我上面的編輯。 – Dodinas