簡體   English   中英

如何為此編寫mysql查詢?

[英]How to write mysql query for this?

我想查詢輸出已完成工作的所有job_ID(JobDone) 在此處輸入圖片說明

我試圖在查詢上使用內部聯接,但未能完成我想要的。

SELECT * FROM `jobs` WHERE Status='JobDone' GROUP BY Job_id

上面的查詢還返回僅完成一項工作的值。

使用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.

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