Codeigniter Active Recordsクラスを使用していて、自分のIDではなく、ユーザーの「実際の」名前を表示できるように、clients
テーブルにusers
テーブルを追加したいと考えています。ここでCodeigniter複数の条件で結合する
A_2、A_1 clients
表は(例)のように見えるものであると列、およびA_3は具体的には、user id
、私のusers
テーブルに対応しています。
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');
を試してみてください。クエリをアクティブなレコードに変換しないという別の理由があります。P –
ありがとうございました!これは助けになりました。私はActiveレコードを使って作業するようにしました。上記の私の編集を参照してください。 – Dodinas