2013-08-02 47 views
0

我想弄清楚如何做這個SQL查詢,但我很茫然。我想我已經超出了我的想法。 我有三個表格: 1.日期表,其中包含到2020年的月/年列表。列是'thedate' 2.包含講座列表的表格。日期()字段是一列,名稱爲「月」 3.日誌表,其中包含月份到月份的各個行數據。即每個用戶在一年的每個月都有自己的一行數據。查找與兩個數據表和日期表加入空字段

我想表#2,找到是否有一個講座指定爲月x,然後採取表#3,找到行對應於月x和特定用戶,然後看看是否列'hopkins'(表3的一部分)是否爲空。我希望這有點意義。我已經想出瞭如何使用日期表來查找表#2中缺失的行,但我還沒有弄清楚如何做到這一點。 謝謝!

+0

請使用mysql的命令'DESCRIBE tablename'將你的DDL導出 – Sebas

+0

沒有足夠的字符空間插入這裏,所以我拿了一個screengrab。 http://i.imgur.com/PpSvpRo.jpg – user2558042

+0

使用http://sqlfiddle.com來顯示錶格和查詢 – Tarik

回答

0

我覺得你只是想要一個左連接從evalhopkins,然後在現場測試:

select e.uid, 
     max(case when h.name is null then 0 else 1 end) as isInHopkins 
from eval e left outer join 
    hopkins h 
    on year(e.month) = year(h.month) and 
     month(e.month) = month(h.month) 
group by e.uid; 

如果hopkins.id應該與用戶,那麼你將要添加and e.uid = h.idon條款。

如果這不能給你你想要的,那麼請編輯你的問題,以提供SQL小提琴數據的示例結果。

+0

我相信我擁有它。這不是最美麗的,但它的工作原理。 'SELECT thedate \t \t FROM datetable \t \t LEFT JOIN EVAL上eval.month = datetable.thedate \t \t LEFT JOIN霍普金斯hopkins.month = datetable.thedate \t \t WHERE eval.hopkins IS NULL \t \t和uid ='1' \t \t以及'2013-07-01'和DATE_FORMAT(NOW(),'%​​Y-%m-01')之間的日期 – user2558042

相關問題