2017-04-27 141 views
1

所以我有查詢的輸出應該顯示所有受過醫學培訓的工作人員,並有急救所有的志願者:Where子句查詢

SELECT Concat (s.staff_fname, ' ', s.staff_lname)  AS Staff_Name, 
    s.medically_trained, 
    s.staff_email_address, 
    Concat(v.volunteer_fname, ' ', v.volunteer_lname) AS Volunteer_Name, 
    v.first_aid, 
    v.volunteer_email_address 
FROM volunteer v 
    JOIN staff s 
    ON v.volunteerid = s.staffid 
WHERE s.medically_trained = ' yes' 
    AND v.first_aid = ' yes' 

但是當我執行我的代碼,它說,空集。我究竟做錯了什麼?

我是初學者所以編碼器請不要判斷,如果香港專業教育學院取得了明顯的錯誤笑

THANK YOU!

+0

在您的問題中發佈樣本數據和表結構。但有一點,你的地方的條件在'是'之前有空格 - >''是''這是故意的嗎? – WillardSolutions

+0

您的查詢在WHERE子句中有'yes'。該列*是否真的包含值'space,lowercase-y,lowercase-e,lowercase-s'來表示真值? –

回答

0

首先從'yes'中刪除空格,它也可能會導致此問題。您可能會得到not null值的結果。

如果仍是空白,然後嘗試在兩個表的單獨運行的where子句,

SELECT * FROM 志願者v,其中v.first_aid =「是」;

and select * from staff s WHERE s.medically_trained ='yes';

並檢查是否有任何一個給你爲null,如果是,那麼你的答案是正確的。

+0

這是因爲在空格中,謝謝! –

0

where部分刪除空格:

SELECT Concat (s.staff_fname, ' ', s.staff_lname)  AS Staff_Name, 
    s.medically_trained, 
    s.staff_email_address, 
    Concat(v.volunteer_fname, ' ', v.volunteer_lname) AS Volunteer_Name, 
    v.first_aid, 
    v.volunteer_email_address 
FROM volunteer v 
    JOIN staff s 
    ON v.volunteerid = s.staffid 
WHERE s.medically_trained = 'yes' /* <-- */ 
    AND v.first_aid = 'yes' /* <-- */ 
0

如果你做一個CONCAT('foo', 'null'),其結果將是null。檢查是否不是這種情況。

此外,它可能來自JOIN子句或WHERE子句。嘗試運行沒有JOIN,然後沒有WHERE子句的查詢,看看你是否仍然有空集。

0

試試這個:

SELECT CONCAT(s.staff_fname,' ', s.staff_lname)AS Name,s.medically_trained AS Trained,s.staff_email_address AS Email_Address,'STAFF' cType 
FROM staff s 
WHERE s.medically_trained = ' yes' 

UNION ALL 

SELECT Concat(v.volunteer_fname, ' ', v.volunteer_lname) AS Name,v.first_aid AS Trained,v.volunteer_email_address AS Email_Address,'VOLUNTEER' cType 
FROM volunteer v 
WHERE v.first_aid = ' yes' 

我使用UNION ALL兩個表,因爲我不認爲Volunteer_ID將相當於STAFF_ID。我包括cType列以便確定記錄是否來自職員表或志願者