2016-09-17 50 views
0

我一直在爲學校的網站工作,但我遇到了問題。我必須總結不同表格中的值,然後在頭版上顯示什麼。總和在查詢中的值,並按照項目ID過濾顯示此表

讓我進一步解釋:

Front page

在這個截圖,可以看到其中包含了頭:計劃和執行

  • 計劃 =的時間,你打算支付的金額在項目上。
  • 執行 =您花在整個項目上的時間。

這是一個簡單的查詢和代碼,我用它來填充表:

<?php 
$query = mysqli_query($conn, "SELECT * FROM `projecten`"); 
while ($row = mysqli_fetch_array($query)) {?> 
    <tr class="active"> 
     <td style="display:none;" class="id"><?php echo $row['ID'];?></td> 
     <td><?php echo $row['Naam'];?></td> 
     <td><?php echo $row['Plan'];?></td> 
     <td><?php echo $row['Do'];?></td> 
     <td> 
     <a class="btn btn-default btn-success" href="ExpandedProject.php?id=<?php echo $row['ID'];?>">Expand</a> 
       <a class="btn btn-default btn-danger" href="Delete_Project.php?id=<?php echo $row['ID'];?>">Verwijderen</a> 
     </td> 
    </tr> 
<?php } ?> 

現在我試圖做:

SQL = SELECT *, sum(tasks.Plan) FROM `projecten`,`tasks` 

這工作,但因爲我有1代表的所有不同項目的任務將添加不屬於該項目的任務。所以我又刪除了這個。

我也嘗試過使用上面的查詢,然後在任務表中添加一個過濾項目標識的地方。

我的問題是我怎麼做,所以看起來將總結計劃,做,正確顯示這些值,並通過該項目ID

只想讓你知道,我有2個左手,當談到被過濾到PHP,所以我很抱歉,如果在代碼中有一些錯誤:)

我也想放更多的圖片我有,但我不能添加他們,因爲我的聲譽。

感謝您的幫助!

+0

'sum()'是一個好的開始,'group by'是下一步。 – Blake

+0

查找SQL'JOIN'語法應該可能是您的第一步 – RiggsFolly

+1

Robert;在解決sql問題時,我認爲你會發現從SQL代碼中分離SQL問題更容易(並且更容易獲得幫助)。用示例數據向我們展示您的源表格(模式),給出一個示例(以表格形式)您希望看到的結果,並且我保證有人會以驚人的速度爲您提供答案。 – SteveJ

回答

0

你可以做這樣的:

SELECT p.id, 
      p.naam, 
      coalesce(sum(t.plan),0) plan, 
      coalesce(sum(t.do),0) do 
FROM  projecten p 
LEFT JOIN tasks t 
     ON p.id = t.projectid 
GROUP BY p.id, 
      p.naam 

LEFT JOIN是一個外連接給將從兩個鏈接表的記錄,具有額外的功能,如果沒有相應的任務找到記錄項目記錄,項目記錄將仍然在結果中,但null值通常是來自任務記錄的列。

group by子句將聚合多個任務記錄,這樣您仍然只能得到一個記錄,每項目記錄。 sum表達式告訴SQL引擎如何進行此聚合。

包含在​​3210功能,以確保一個projecten記錄而無任何任務記錄,不會顯示null計劃,而不是0。如果您更喜歡這種情況下的空白,請刪除coalesce(..., 0),只剩下sum(...)