2012-11-06 77 views
0

我有兩個mysql表。 jobsreqtraining和coursescompleted。比較mysql表,看看是否有記錄可用於每個條目

jobsreqtraining有兩列,工作和培訓。

coursescompleted有兩列,當然和人。下面

快照:

jobsreqtraining

jobsreqtraining

coursescompleted

coursescompleted

我需要做的是說,如果布賴恩哈瓦那做工作起重機操作員什麼,已經他完成了'MHE駕駛執照'課程?

所以我的查詢將有兩個變量,工作和人員。所以,如果我選擇了布賴恩哈瓦那和起重機操作員我所需的輸出是


培訓                                             已完成課程?

起重機操作員                     沒有


我beleive我必須使用左外連接到達致這可是爭奪以獲取工作所需課程即使該人沒有完成培訓,也會顯示出來?

select 
    n.course, 
    c.person 
from (select 
    training as course 
    from jobsreqtraining where Job='crane operator' 
) as n 
left outer join coursescompleted c 
    on n.course=c.course 
where c.person='bryan habana' 

幫助表示讚賞一如既往, 謝謝,

+0

這些表格是如何相互關聯的? –

+0

目前沒有關係。 – Smudger

回答

1

coursescompleted.coursejobsreqtraining.training結合在一起?如果是的話,你可以這樣做:

SELECT jobsreqtraining.job as Training, 
    IF(EXISTS(SELECT * FROM coursescompleted 
      WHERE coursescompleted.person='bryan habana' 
       AND jobsreqtraining.training = coursescompleted.course), "Yes", "No) 
FROM jobsreqtraining 
WHERE jobsreqtraining.job = 'crane operator' 
1
select 'creane operator' `job`, 
CASE WHEN (select count(*) from coursescompleted where person='bryan habana' 
and course=(select training from jobsreqtraining where job='crane operator')) > 0 
then 'Yes' else 'No' END `Completed Course` 
2
SELECT 
    n.person, 
    j.job AS job, 
    j.training AS Training, 
    CASE WHEN c.person IS NULL THEN 'No' ELSE 'Yes' END AS `Completed Course?` 
FROM jobsreqtraining j 
    CROSS JOIN (select distinct person from coursescompleted) n 
    LEFT JOIN coursescompleted c 
    ON j.training = c.course AND n.person = c.person 
WHERE 
    n.person = 'Bryan Habana' 
    AND j.job = 'Crane Operator' 

live demo at sqlfiddle.com

注意,你可以改變WHERE子句來選擇不同的組對不同的人及/或不同的工作信息。即使作品爲多個人員和/或工作。

Here is an example with the where clause omitted completely。它顯示所有人的所有工作,每個人都有/沒有指示。

相關問題