2016-05-10 5 views
1

私は後でそれを使用するmysqlクエリから来るデータを取得しようとしています。私は、テーブル内のデータをjoin句で出力する必要があるかどうかは気にしません。私はそれからspeficic部分を得ることができる必要があります。しかし、私は、関連性があるか、または互いに関連性があるものすべてを取得したいです。私は複数のテーブルからの照会をしようとしていますcodeigniterからアクティブなレコードクラスを使用しようとしています

これはPHP

example database with tables

とCodeIgniterのMVCフレームワークで作られて、私は

function get_reg(){ 
    $this->db->select('*'); 
    $this->db->from(' 
         tableA.*, 
         tableB.*, 
         tableC.*, 
         tableD.* 
        '); 
    $this->db->where('tableA.name = tableB.name'); 
    $this->db->where('tableC.name = tableD.name'); 
    $this->db->where('tableA.name = tableD.name'); 
    $this->db->where('tableC.name = tableB.name'); 
    $query = $this->db->get(); 
    return $query->result_array(); 
} 

1つのクエリで、各テーブルからデータにアクセスできるようにしたい、このような何か、その後に次のようにアクセスしてください:

$ this-> load_model-> get_reg()//私が望むものを取得

これが可能かどうかわかりません。

答えて

0

単一のクエリでこれを行うには、JOIN構文を使用する必要があります。

あなたの答えは、上記のすべてのテーブルで同じように表示される名前に基づいて、一緒にすべてのテーブルを結合

$this->db->from('tableA'); 
$this->db->join('tableB', 'tableA.name = tableB.name', 'LEFT'); // the type of join depends on the behavior you want 
$this->db->join('tableC', 'tableA.name = tableC.name', 'LEFT'); 
$this->db->join('tableD', 'tableA.name = tableD.name', 'LEFT'); 
$query = $this->db->get(); 

ようになります。結合された表のいくつかの行にnameの値がない場合、結合のタイプは重要です。

詳細はdocs

関連する問題