2012-03-06 152 views
0

我有一個表中的數據(結果/輸出)是這樣的:如何創建SQL查詢

Project code project name associates     time efforts in days 
1    Analytics  amol,manisha,sayali,pooja (21+17+20+17)=57 

我需要計算天時間的努力。我已經在二月份完成了這項工作,並且我已經爲每個人在該月份工作的日子添加了一些內容我的意思是,我的所有天數都減去了所有同事中任何一天的缺席天數。

所以,我需要通過SQL查詢來做到這一點。

我有一個表,其中包含所有與日期存在的同事。

像這樣:

UID username date 

所以任何一個可以給我一個建議,我怎麼能做到這一點?

+2

我想你需要更好地理解你的數據模型,以及你到目前爲止已經嘗試過的方法,才能很好地回答這個問題。例如,在另一個表格中存儲「同事」和「時間努力」,或者您的問題顯示的是名單/數字列表? – 2012-03-06 05:32:11

+9

將逗號分隔的**項目列表放置到像「asscociates」列那樣的單個列中,對於關係數據庫來說是一個真正的BAD **設計。現在把它加入到'Associates'的表中是一件非常令人討厭和痛苦的工作......你應該瞭解良好的關係設計的基礎知識 - 特別是如何對錶格進行標準化 - 第一種正常形式表示:把**一個原子值**放入每一列! – 2012-03-06 05:41:29

+0

第一張桌子不是桌子...其結果我需要從第二張桌子上查詢得到 – Manisha 2012-03-06 09:02:44

回答

0

這將是一個更好的設計,有一個單獨的表來存儲projectid,團隊成員id和他/她在幾天的努力。這樣你就可以編寫一個簡單的連接查詢來實現你想要的。

0

這是我會做的。改變你的表,所以你有:

項目

project_code project_name 
1    Analytics 

用戶

UID username date 
1 amol 
2 manisha 
3 sayali 

projects_users

project_code uid effort 
1    1  21 
1    2  17 
1    3  20 

現在你可以查詢你問這樣的結果:

SELECT 
    p.project_code, 
    p.project_name, 
    GROUP_CONCAT(DISTINCT u.username SEPARATOR ', ') AS associates, 
    SUM(pu.effort) effort 
JOIN users AS u 
JOIN projects_users AS pu 
FROM projects p 
GROUP BY project_code