2017-08-02 8 views
0

私の問題は: "Customer"列を含むテーブルを表示したいとします。 "Measures"のコレクションが内部にあるテーブルです。問題は、2種類の「措置」があることです。それらはまた、 "タイプ"(0と1)と呼ばれる列でデータベーステーブルに分離されています。1つのテーブルに2回参加することはできますか?

、すべての「測定」を「顧客」に属しているが、各「測定」タイプのために「顧客」の名前を取得するためのさまざまな方法があります:

これはコードです:

$select = "blablabla..., c.name as customer"; 
$this->db->select($select); 
$this->db->from("it_measure m"); 

:タイプ1で "対策" のために

$this->db->join("it_ma ma", "m.id = ma.measure", "LEFT OUTER"); 
$this->db->join("it_a a", "ma.a = a.id", "LEFT OUTER"); 
$this->db->join("it_i i", "a.i = i.id", "LEFT OUTER"); 
$this->db->join("it_customer c", "i.customer = c.id", "LEFT OUTER"); 

それはタイプ0と "対策" のために行きます

私は、異なるタイプの両方のタイプの顧客名を取得するために異なる結合があることがわかります。 両方の例での最後の結合が重要です。私は同じテーブル(table_customer)に参加したいです。 どのように実現することができますこのクエリを組み合わせて、両方の結合をその1つのフィールドの顧客に得ることができます。 私はifクエリでも試してみました。if type 0 .. else type 1 ..しかし動作しません。

あなたが私を助けることができるなら、私はうれしいでしょう! 不明な点がある場合はお尋ねください。 ありがとうございました!

+0

[MySQL:同じテーブルを複数回結合するにはどうすればよいですか?](https://stackoverflow.com/questions/12561733/mysql-how-do-i-join-same-table-multiple- times) – JeffUK

答えて

5

もちろん、各テーブルに別のエイリアスを付けるだけです。

+0

少なくとも、私は$ select = "blablabla ...、** c.name as customer"; ** line? –

+0

はい、たとえば、同じテーブルの名前を入力する場合は、FROMステートメントで指定した独自のエイリアスの前に入力します。例:1.name、2.name – Phil

+0

ありがとうございます。私はちょうどselect = "blablabla ...、** c1.name customer、c2.name as customer"; **に変更しました。今私は値が表示されますが、間違った値ではありません。私は私のクエリを確認します –

関連する問題