3

最大 3 つの任意のフィールド ("location, Crime and food_rating" など) と 2 つの任意のテーブル名 ("food and Crime" など) があり、これらの特定のフィールドが含まれる場合があります。

属性が両方のテーブルにある場合、理解できる「あいまいな」エラーが表示されます。しかし、考えられるすべてのケースをチェックし、可能であれば結合するクエリを作成する方法がよくわかりません。

私はこれを codeigniter で行っており、これまでのところ次のように記述しており、エラーが発生します。また、任意のフィールドを空にすることもできることに注意してください。

$this->db->select($data->att_one . ',' . $data->att_two . ',' . $data->att_three)
->from($data->db_one . ',' . $data->db_two)
->get()
->result_array();

私が受け取るエラーは次のとおりです。

Column 'location' in field list is ambiguous (場所は両方のテーブルにあるため)

4

1 に答える 1

3

問題あいまいさです。どのテーブルから何を選択し、どのように結果を入力するかが明確ではありません。

1つの結果で「food」テーブルと「crimes」テーブルの両方から「location」が必要な場合は、それらのエイリアスを作成する必要があります。

$this->db
    ->select('food.location as foodlocation, crimes.location as crimeslocation')
    ->from('food, crimes')
    ->get()
    ->result_array();

これらの結果で何をしているかによっては、テーブルごとに新しいクエリを使用する方が簡単な場合があります。

$results = array();
$select = array($data->att_one, $data->att_two, $data->att_three);
$tables = array($data->db_one, $data->db_two);

foreach ($tables as $tableName)
{
    $results[$tableName] = $this->db->select($select)
        ->get($tableName)
        ->result_array();
}

それは実際に何をしているかによって異なりますが、データベースがクエリを理解できない理由がわかるといいのですが。

于 2013-03-03T19:55:54.080 に答える