1

各従業員とそのマネージャーをリストする結果セットを返すクエリの作成に問題があります。

従業員データベースに精通している場合は、従業員テーブル、dept_manager テーブル、および前の 2 つのテーブルをリンクできる dept_emp テーブルであることを知っています。

私の結果セットは、全員と 1 つの部門に対して 1 つのマネージャーのみを返します。

私が得ることができるどんな助けにも感謝します!

SELECT d.dept_name AS 'Dept', 
CONCAT(em.last_name, ' ', em.first_name) AS 'Manager last, first',
CONCAT(e.last_name,' ', e.first_name, ' ', t.title) AS 'Employee last, first (title)'
FROM dept_manager AS dm

LEFT JOIN dept_emp AS de ON de.dept_no = dm.dept_no
LEFT JOIN departments AS d ON d.dept_no = dm.dept_no
LEFT JOIN employees AS e ON e.emp_no = de.emp_no
LEFT JOIN employees AS em ON em.emp_no = dm.emp_no
LEFT JOIN titles AS t ON t.emp_no = e.emp_no 

WHERE 
dm.emp_no = e.emp_no
AND
dept_name = 'Sales'
OR 
dept_name = 'Marketing'
AND
dm.to_date >= '2012-05-07'
AND
t.to_date > '2012-05-07'
AND
de.to_date > '2012-05-07'

ORDER BY e.last_name, e.first_name

limit 1000
4

2 に答える 2

0

この sql が役立つかどうかはわかりません。タイトルは取得できませんでしたが、2 番目のサブクエリに含めることができると思います。全体的な考え方は、最初に emp_id と manager_id を取得しようとすることです。それに基づいて、サブクエリによって関連情報を取得します。

SELECT   (SELECT dept_name FROM departments WHERE dept_no = de.dept_no)
       , (SELECT CONCAT(last_name, ' ', first_name) FROM employees WHERE emp_no = de.emp_no)
       , (SELECT CONCAT(last_name,' ', first_name) FROM employees WHERE emp_no = dm.manager_no)
FROM dept_emp de 
INNER JOIN dept_manager dm ON de.dept_no = dm.dept_no
于 2013-05-08T06:07:58.030 に答える