簡體   English   中英

MySQL查詢從具有內部聯接的不同表中選擇

[英]Mysql query select from different tables with inner join

從包含所有用戶的tb_user表中,我試圖內部聯接其他表以匹配每個用戶的數據並全部選擇。 但是從tb_work_time表中,over_time列為每個用戶提供了多個數據。 我只想選擇給出日期的數據。

現在我有這段代碼,它不能很好地工作。

SELECT
u.emp_no, u.name, u.position, d.name as dept_name, u.activeYN, (SELECT over_time FROM tb_work_time wt WHERE wt.emp_no = u.emp_no AND wt.work_date = '20190306'),
CASE WHEN ui.updatedTime >= NOW() - INTERVAL 5 minute THEN 'Y' ELSE 'N' END connectYN
FROM tb_user u
INNER JOIN tb_work_time wt ON u.emp_no = wt.emp_no
INNER JOIN tb_user_dept ud ON u.emp_no = ud.emp_no
INNER JOIN tb_dept d       ON ud.dept_id = d.dept_id
INNER JOIN tb_user_info ui ON ud.emp_no = ui.emp_no 

當我執行此查詢..結果是這樣。 在此處輸入圖片說明

它只是一直搜索,沒有結果。

SELECT
u.emp_no, u.name, u.position, d.name as dept_name, u.activeYN, (SELECT over_time FROM tb_work_time wt WHERE wt.emp_no = u.emp_no AND wt.work_date = '20190306') AS over_time,
CASE WHEN ui.updatedTime >= NOW() - INTERVAL 5 minute THEN 'Y' ELSE 'N' END connectYN
FROM tb_user u
INNER JOIN tb_user_dept ud ON u.emp_no = ud.emp_no
INNER JOIN tb_dept d       ON ud.dept_id = d.dept_id
INNER JOIN tb_user_info ui ON ud.emp_no = ui.emp_no 

我已經使此代碼起作用。 但這確實很慢。 無論如何,它可以使速度更快嗎?

這是幾個查詢嘗試。 由於問題中未提供樣本數據,因此均未測試這兩項。

SELECT
u.emp_no,
u.name,
u.position,
d.name as dept_name,
u.activeYN,
wt.over_time,
CASE WHEN ui.updatedTime >= NOW() - INTERVAL 5 minute THEN 'Y' ELSE 'N' END connectYN
FROM tb_user u
INNER JOIN tb_work_time wt ON u.emp_no = wt.emp_no
INNER JOIN tb_user_dept ud ON u.emp_no = ud.emp_no
INNER JOIN tb_dept d       ON ud.dept_id = d.dept_id
INNER JOIN tb_user_info ui ON ud.emp_no = ui.emp_no
WHERE wt.work_date = '20190306';

下面如果有任何可能使用此版本emp_notb_work_time具有每多行表work_date

SELECT
u.emp_no,
u.name,
u.position,
d.name as dept_name,
u.activeYN,
ot.over_time,
CASE WHEN ui.updatedTime >= NOW() - INTERVAL 5 minute THEN 'Y' ELSE 'N' END connectYN
FROM tb_user u
INNER JOIN (SELECT emp_no, SUM(over_time) AS over_time FROM tb_work_time WHERE work_date = '20190306' GROUP BY emp_no) ot ON u.emp_no = ot.emp_no
INNER JOIN tb_user_dept ud ON u.emp_no = ud.emp_no
INNER JOIN tb_dept d       ON ud.dept_id = d.dept_id
INNER JOIN tb_user_info ui ON ud.emp_no = ui.emp_no;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM