2013-01-19 55 views
1

有點背景...結果排序日期在第二個表

我現在有一個客戶端領域,爲客戶登錄,看看他們的工作的進展情況,並留下任何評論等。在客戶方面,我有一個管理員區域,它使我能夠登錄並查看所有作業。一切工作正常,但我想能夠整理它有點整潔。

該數據庫由4個表格組成,其中2個與此查詢相關...作業和帖子。目前,只需在列表中顯示爲每個客戶端的作業的完整列表,使用下列內容:

$result = mysql_query("SELECT * FROM Jobs ORDER BY date DESC"); 

然後:

<a href="jobdetail.php?clientid='. $row['ClientID'].'&jobid='.$row['JobNumber'].'">'. $row['Username'].' - '. $row['ClientID'].'.'.$row['JobNumber'].' - '.$row['Description'].' - '.$row['Status'].'</a> 

正如你所看到的,細節是從數據庫中取出並呼應,和整個事件然後鏈接到從其ClientID和JobNumber加載作業的頁面。所有客戶都可以有一個工號1,例如ClientID:12345和ClientID:12346都可以有JobNumber1。目前,這一切都正常,但我希望在最上面的Posts表中有最新的帖子,然後是下一個最新的帖子,依此類推。

在經過一番研究,我已經有了這個時刻:

SELECT 
Jobs.* 
FROM Jobs 
LEFT JOIN Posts ON Posts.JobNumber=Jobs.JobNumber 
GROUP BY 
Jobs.ClientID, Jobs.JobNumber 
ORDER BY Posts.PostDate 

而且雖然我得到所有的結果,我沒有讓他們在後的日期的順序。我有一種感覺是因爲我實際上並沒有從Posts表中拉出PostDate值,但我嘗試了加載,並且我沒有設法讓任何東西起作用!

如果任何人都可以給我任何指針,將不勝感激。先謝謝你。

+0

'集團BY'旨在與所有非GROUPBY柱聚合函數中使用。 MySQL會原諒這一點,但會在非GROUPBY列中返回隨機選擇的值。我嚴重懷疑這是你想要的。 –

+0

我得到值與正常返回。 '選擇 工作* 喬布斯 LEFT JOIN帖子ON Posts.JobNumber = Jobs.JobNumber GROUP BY Jobs.ClientID,Jobs.JobNumber ORDER BY帖子.PostDate' 但它沒有按順序排序,但我從下面的代碼中得到的結果只是完全混亂。 – BN83

回答

1

得到它的工作:

SELECT 
c.ClientID 
, j.JobNumber , j.Username , j.Description , j.ClientID , j.Status , j.AdminUnread 
, MAX(p.PostDate) as postedOn 
FROM Clients c 
INNER JOIN Jobs j ON c.ClientID=j.ClientID 
LEFT JOIN Posts p ON j.JobNumber=p.JobNumber AND c.ClientID=p.ClientID 
GROUP BY 
c.ClientID 
, j.JobNumber 
ORDER BY 
postedOn DESC, c.ClientID, j.JobNumber DESC 
0

試試這個:

SELECT * 
FROM Jobs j 
INNER JOIN (SELECT p.* 
      FROM posts p 
      INNER JOIN (SELECT JobNumber, MAX(postdate) postdate 
         FROM posts GROUP BY jobnumber 
         ) a ON p.JobNumber = a.JobNumber AND a.postdate = p.postdate 
      ) p ON p.JobNumber = j.JobNumber 
GROUP BY j.ClientID, j.JobNumber 
ORDER BY p.PostDate; 
+0

感謝你們,但現在它完全擾亂了列表中的所有結果,我無法確定它實際輸出的是什麼。客戶姓名和身份證等都是錯誤的職位上錯誤的標題。 – BN83

+0

@ BN83添加一些示例輸入數據和輸出數據,以便我可以檢查此查詢有什麼問題 –

+0

請參閱我對OP問題的評論。你不能像這樣使用'GROUP BY'並期待一致的結果。 –

相關問題