-1

codeigniter の使用中に 2 つのテーブルを結合しようとしています。通常の SQL を記述して、これと同じ SQL クエリを実行しました。codeigniter で同じことをしようとすると、エラーが発生し続けます。何が間違っているのかよくわかりません。私が間違っていることは何だと思いますか?

model_data.php の私の関数

function getJoinInformation($year,$make,$model)
{
 //$this->db->distinct();
 // here is where I need to conduct averages but lets just work on extracting info. 
 // from the database and join tables.
 $this->db->select('*');
 $this->db->from('tbl_car_description');
 $this->db->join('tbl_car_description', 'd.id = p.cardescription_id');
 $this->db->where('d.year', $year);
 $this->db->where('d.make', $make);
 $this->db->where('d.model', $model);
 $result = $this->db->get();
 /*
 $query = $this->db->get_where('tbl_car_description',
  array(
    'year' => $year,
    'make' => $make,
    'model' => $model
   )
  );

  if($query->num_rows()) return $query->result();
  return null;
 */
}

私のエラーメッセージ

A Database Error Occurred

Error Number: 1066

Not unique table/alias: 'tbl_car_description'

SELECT * FROM (`tbl_car_description`) JOIN `tbl_car_description` ON `d`.`id` = `p`.`cardescription_id` WHERE `d`.`year` = '2006' AND `d`.`make` = 'Subaru' AND `d`.`model` = 'Baja'

Filename: C:\wamp\www\_states\system\database\DB_driver.php

Line Number: 330

これはSQLで書かれたコードで、うまく機能しています。codeigniter で何かをしたいのですが、どうすればいいのか混乱しています。どんな助けでも大歓迎です。みんな、ありがとう。

$sql_2 = mysql_query("SELECT ROUND(AVG(p.value),1) AS AvgPrice, ROUND(AVG(p.mileage),1) AS AvgMileage
FROM  tbl_car_description d, tbl_car_prices p
WHERE (d.id = p.cardescription_id)
AND (d.year = '".$year."')
AND (d.make = '".$make."')
AND (d.model = '".$model."')
AND (p.approve = '1')");
4

2 に答える 2

0

カップルの問題:テーブルのエイリアスを含める必要があり、結合には2番目のテーブルの名前が必要です...

$this->db->from('tbl_car_description AS d');
$this->db->join('tbl_car_prices AS p', 'd.id = p.cardescription_id');
于 2013-06-05T20:39:10.930 に答える
0

CI クエリが同じテーブルを 2 回参照していますが、これはタイプミスだと思います。ただし、Active Record 呼び出しにテーブル エイリアスとテーブル名を含めるだけで済みます。

 //$this->db->distinct();
 $this->db->select('*');
 $this->db->from('tbl_car_description d');
 $this->db->join('tbl_car_prices p', 'd.id = p.cardescription_id');
 $this->db->where('d.year', $year);
 $this->db->where('d.make', $make);
 $this->db->where('d.model', $model);
 $result = $this->db->get();
于 2013-06-05T20:39:45.820 に答える