0

次の3つのテーブルがあります。私はこのようにこれらの3つのテーブル間で相互リンク(結合)しようとしています-

リンク1

table1.code=table2.account-code  
table1.code=table3.t-code      
table2.voucher_no=table3.voucher_no 

ここに画像の説明を入力してください

Codeignitierの方法でクエリを実行しようとしましたが、table1が一意ではないなどのエラーメッセージが表示されます。

これが私が試したものです(そしてエラーが発生しました)

  $this->db->select('*');
   $this->db->from('table2');
   $this->db->join('table3', 'table2.voucher_no = table3.voucher_no');
  $this->db->join('table1', '(table1.code = table2.account_code)');
  $this->db->join('table1', '(table1.code = table3.t_code)');

どこが間違っていたのか教えていただけませんか?

4

1 に答える 1

2
$this->db->select('table1.* , table2.* , table3.*');
$this->db->from('table2');
$this->db->join('table3', 'table2.voucher_no = table3.voucher_no','left');
$this->db->join('table1', 'table1.code = table2.account_code AND table1.code = table3.t_code','left');
$this->db->get();

3つのテーブルすべてを選択したい場合は、選択ステートメントも結合の使用方法を確認してください。結合で使用したブラケットを削除しました。

編集済み

これにより、このクエリが生成されます

SQL: SELECT `table1`.*, `table2`.*, `table3`.* FROM (`table2`) LEFT JOIN `table3` ON `table2`.`voucher_no` = `table3`.`voucher_no` LEFT JOIN `table1` ON `table1`.`code` = `table2`.`account_code` AND table1.code = table3.t_code

そしてテスト目的のために

http://brettdewoody.com/labs/active-check/index.php

于 2012-04-07T10:38:06.233 に答える