【问题标题】:display multiple data from multiple different table显示来自多个不同表的多个数据
【发布时间】:2013-08-27 13:47:37
【问题描述】:

我的数据库中有 3 个不同的表:

Leave {leave_id, leave_type, emp_id}
Employee {emp_id. emp_name, dept_id}
Department {dept_id, dept_name}

我希望根据leave_id选择leave_type、emp_name和dept_name。

我应该如何编写这个查询?

谢谢

【问题讨论】:

标签: php mysql


【解决方案1】:
Select l.leave_type, e.emp_name, d.dept_name 
    FROM Leave l 
        JOIN Employee e ON l.emp_id = e.emp_id 
        JOIN Department d ON e.dept_id = l.dept_id 
    WHERE l.leave_id = '1'; //give leave_id which you want

使用上面的查询。

【讨论】:

    【解决方案2】:

    试试这个

    select leave_type, emp_name ,dept_name from Leave, Employee, Department where Leave.emp_id = Employee.emp_id AND Employee.dept_id = Department.dept_id ;
    

    【讨论】:

      【解决方案3】:

      试试这个

      SELECT leave_type, emp_name, dept_name 
      FROM   Leave as l
      JOIN   Employee as e ON e.emp_id = l.leave_id
      JOIN   Department as d ON d.dept_id= l.leave_id
      WHERE  leave_id = $id
      

      【讨论】:

        【解决方案4】:

        此选项将返回满足连接条件的所有行。

        SELECT leave_type, emp_name, dept_name
        FROM Leave
        INNER JOIN Employee ON Leave.emp_id = Employee.emp_id
        INNER JOIN Department ON Employee.dept_id = Department.dept_id
        WHERE Leave.leave_id = ?
        

        【讨论】:

          【解决方案5】:

          使用 LEFT JOIN 强制加入,即使其中一个没有价值。

          SELECT leave.leave_type, emp.emp_name, dept.dept_name
              FROM Employee emp
               LEFT JOIN Leave leave on emp.emp_id = leave.emp_id
               LEFT JOIN Department dept on dept.dept_id = emp.dept_id
           WHERE
           leave.leave_id='{$YOUR_VALUE}'
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-04-28
            • 2020-06-16
            • 2014-04-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-10
            • 1970-01-01
            相关资源
            最近更新 更多