8

CodeIgniterで結合クエリを使用していますが、機能させることができません。1つのテーブルデータのみが表示され、他のデータは表示されません。私はCodeIgniterを初めて使用し、これを理解できません。誰かが私を助けてくれとお願いします。事前にTnanks。

見る

<?php foreach ($query as $row): ?>

    <?php echo $row->answerA;?><br>
    <?php echo $row->answerB;?><br>
    <?php echo $row->answerC;?><br>
    <?php echo $row->comment;?><br>
    <?php echo $row->name; ?>

<?php endforeach; ?>  

コントローラ

function getall() {

    $this->load->model('result_model');
    $data['query'] = $this->result_model->result_getall();
    // print_r($data['query']);
    // die();
    $this->load->view('result_view', $data);

}

モデル

function result_getall() {

    $this->db->select('tblanswers.*,credentials.*');
    $this->db->from('tblanswers');
    $this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'right outer'); 
    $query = $this->db->get();
    return $query->result();

}

編集

結果として

print_r($data['query']);
die();

以下のような配列です:

Array ( [0] => stdClass Object ( [answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 83 [name] => Edvinas [second_name] => liutvaits [phone] => [email] => ledvinas@yahoo.ie ) [1] => stdClass Object ( [answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 84 [name] => Edvinas [second_name] => liutvaits [phone] => [email] => ledvinas@yahoo.ie ) [2] => stdClass Object ( [answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 85 [name] => Edvinas [second_name] => Liutvaitis [phone] => [email] => ledvinas@yahoo.ie ) [3] => stdClass Object ( [answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 86 [name] => EdvinasQ [second_name] => LiutvaitisQ [phone] => 12345678 [email] => ledvinas@yahoo.ie ) [4] => stdClass Object ( [answerid] => [userid] => [questionid] => [answerA] => [answerB] => [answerC] => [comment] => [cid] => 87 [name] => Edvinas [second_name] => Liutvaitis [phone] => 123456 [email] => ledvinas@yahoo.ie ) ) 

テーブル構造

資格情報

cid(PRIMARY)、name、second_name、phone、email

tblanswers

answerid(PRIMARY)、userid、questionid、answerA、answerB、answerC。

4

4 に答える 4

17

これで試してください:

$this->db->join('credentials', 'tblanswers.answerid = credentials.cid');

または

$this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'inner');

結果を印刷して、必要なものかどうかを確認します

于 2013-03-05T07:53:56.363 に答える
5

クエリしたいプライマリテーブルは何ですか?これを試すことができます。結合を使用する場合は、各テーブルのエイリアスを指定する必要があります。

 function result_getall(){

    // if you want to query your primary data from the table 'tblanswers',
    $this->db->select('a.*,b.*'); <-- select what you might want to select
    $this->db->from('tblanswers a');
    $this->db->join('credentials b', 'b.cid = a.answerid', 'left'); 
    $query = $this->db->get();
    return $query->result();

    // if you want to query your primary data from the table 'credentials',

    $this->db->select('a.*,b.*'); <-- select what you might want to select
    $this->db->from('credentials a');
    $this->db->join('tblanswers b', 'b.answerid = a.cid', 'left'); 
    $query = $this->db->get();
    return $query->result();

}
于 2013-03-05T09:47:01.087 に答える
2

すべての用語が必要なので、select()タグを削除します。

Uは次のようなコードを変更できます

$this->db->join('credentials', 'tblanswers.answerid = credentials.cid', 'outer'); 
$query = $this->db->get('tblanswers');
return $query->result();
于 2013-03-05T08:11:17.430 に答える
0

両方のテーブルに関連がある場合は、機能するはずです。なぜ右外部結合を使用しているのですか?内部結合またはその他の結合を使用するだけで機能します。さまざまなタイプのJOINについては、 http://www.w3schools.com/sql/sql_join.asp およびここhttp://dev.mysql.com/doc/refman/5.0/en/join.htmlをご覧ください。

これがお役に立てば幸いです。

ありがとうございました

于 2013-03-05T07:56:00.280 に答える