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 所做的那样在员工之后添加 eemployees别名。$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 子句中的日期字符串没有被引用。尝试更新语句以引用字符串,或将其作为第二个参数传入。

$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 子句中,应在第一个参数中输入运算符,以便与第二个参数值进行比较。

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