[英]How to write mysql query for this?
使用join query
獲取結果
select j1.Name,j2.Labor from jobcard j1 innerjoin jobs j2 on j1.job_ID=j2.job_ID where j2.Status='JobDone' GROUP BY j2.job_ID
我認為這是您要記住的查詢:
SELECT j1.*, c.*
FROM jobs j1
INNER JOIN
(
SELECT Job_ID
FROM jobs
GROUP BY Job_ID
HAVING SUM(CASE WHEN Status <> 'JobDone' THEN 1 ELSE 0 END) = 0
) j2
ON j1.Job_ID = j2.Job_ID
INNER JOIN Jobcard c
ON t1.Job_ID = c.Job_ID
子查詢聚合Job_id
並斷言每個狀態Job_id
完成。 此子查詢產生一組ID,然后將這些ID用於確定從表中選擇哪些完整記錄。
我還包括了對Jobcard
表的Jobcard
盡管您可以隨意刪除它。
嘗試這個
SELECT Job_ID FROM Jobs WHERE Status LIKE 'JobDone'
SELECT a.Job_id,a.Labor,c.Name
FROM `jobs` a
left join Jobcard c on a.Job_id=c.Job_id
WHERE not exists (select b.Job_id
FROM jobs b
WHERE Status<>'JobDone' AND b.Job_id=a.Job_id)
如果還需要Jobcard表中的名稱,請使用以下查詢:
SELECT * FROM JOBCARD JC
JOIN JOBS J ON JC.job_ID = J.job_ID
WHERE J.Status = 'jobDone'
如果您不想獲取名稱,也不需要聯接表,請使用以下查詢:
select * from jobs where Status='jobDone'
您應該通過: 與sql聯接
反正這就是你的答案..
select job_ID from JobCard Inner join Jobs On JobCard.job_ID = Job.job_ID where status = 'jobDone' group by Job.labor
。
簡單為:
Select jobcard.job_id, jobs.labor from jobcard
inner join jobs on jobs.job_id = jobcard.job_id
where jobs.status = 'JobDone';
請注意,您所寫的內容:
SELECT * FROM `jobs` WHERE Status='JobDone' GROUP BY Job_id
不顯示已完成的作業的完整列表,因為您正在按job_id進行分組。 正確的說法是:
SELECT * FROM `jobs` WHERE Status='JobDone'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.