2

これは私が欲しいものです:

SELECT DISTINCT first_name,last_name 
FROM employees e 
INNER JOIN salaries s ON e.emp_no = s.emp_no 
WHERE e.birth_date > '1963-01-01' 
AND s.salary>150000

これを試してみたところ、必要な名前だけでなく、追加の 12 個の名前も取得できました。何かが間違っている。

    $this->db->distinct();
    $this->db->select('first_name, last_name');
    $this->db->from('employees');
    $this->db->join('salaries s', 'e.emp_no = s.emp_no', 'inner');
    $this->db->where('e.birth_date > 1963-01-01');
    $this->db->where('s.salary > 150000');

    $result = $this->db->get();
4

3 に答える 3

2

コメントを追加しましたが、提案された回答として追加します。給与 s の場合のように、従業員の後に e を追加するエイリアスemployeesを作成しませんでした。$this->db->from('employees');

$this->db->distinct();
$this->db->select('first_name, last_name');
$this->db->from('employees e');
$this->db->join('salaries s', 'e.emp_no = s.emp_no', 'inner');
$this->db->where('e.birth_date > 1963-01-01');
$this->db->where('s.salary > 150000');

$result = $this->db->get();

編集: where 句の日付文字列は引用符で囲まれていません。ステートメントを更新して文字列を引用するか、2 番目の引数として渡します。

$this->db->where('e.birth_date > "1963-01-01"');

また

$this->db->where('e.birth_date >', '1963-01-01');

これは、データベース内の日付列の正しいフォーマット マスクであると想定しています。

于 2013-04-25T16:37:19.040 に答える
0

アクティブなレコードが混乱している場合は簡単です。クエリ機能を簡単に使用できます

$query  =   "SELECT 
                DISTINCT first_name,
                last_name 
            FROM employees e 
            INNER JOIN salaries s ON e.emp_no = s.emp_no 
            WHERE e.birth_date > '1963-01-01' 
            AND s.salary>150000";
$this->db->query($query);           
于 2013-04-25T18:19:50.380 に答える
0

where 句では、最初のパラメーターに演算子を入力して、2 番目のパラメーターである値と比較する必要があります。

$this->db->where('e.birth_date >', 1963-01-01);
$this->db->where('s.salary >', 150000'); 
于 2013-04-26T14:45:18.270 に答える