2014-06-25 28 views
0

我正在使用設計得非常好的數據庫,它在大多數表中都不包含主鍵。 由於這個原因,我需要調整一些東西來從數據庫中檢索我想要的信息。如何檢索此數據庫中重複項的最新數據?

我有第一個名爲Customer的表,它包含一個名爲customer_id的唯一標識符。它還包含Account_ID。它包含更多我現在不需要的數據。

我正在使用的第二個叫做Contact的表格也包含Account_ID,但它不是唯一的,它是我可以用來將 與其他表格鏈接的唯一數據。爲了解決這個問題,它不是唯一的(出於某種原因,添加了具有相同Account_ID值的新行,而不是修改一個)。 我想檢索插入到數據庫中的最新數據,其中重複項在Account_ID上。幸運的是,這個表中有一個Time_stamp值 。我想我可以利用這一點對我有利。

我應該補充說這是一個文件製作器數據庫,所以當我嘗試了一些我已經在這裏找到的東西時,它似乎並不總能奏效,我假定出於這個原因。

這是我到目前爲止有:

$sql = "SELECT table1.Customer, table1.Account_ID, table2.Account_ID, table2.Phone" 
      . "FROM Customer AS table1" 
       . "JOIN Contact AS table2 ON table1.Account_id = table2.Account_id"; 

這個查詢工作,但不排除重複或尋找在聯繫表中的最新ACCOUNT_ID條目。

回答

0

您的查詢就可以了。我剛剛添加了一個where子句來過濾具有最新時間戳的那個子句。它應該在sql服務器上工作,不知道filemaker。好運:)

SELECT Customer.customer_id, Customer.Account_ID, Contact.Account_ID, Contact.Time_stamp 
FROM Customer 
INNER JOIN Contact ON Customer.Account_ID = Contact.Account_ID 
WHERE Contact.Time_stamp = (SELECT MAX(C.Time_stamp) FROM Contact C WHERE C.Account_ID = Contact.Account_ID); 

test the query here

0

使用該查詢刪除重複的查詢:

"SELECT distinct table1.Customer, table1.Account_ID, table2.Account_ID, table2.Phone,max(table2.Account_ID)" 
      . "FROM Customer AS table1" 
       . "JOIN Contact AS table2 ON table1.Account_id = table2.Account_id" 
+0

謝謝您的回答,但它似乎不工作(給錯誤)。當我從查詢中刪除了這個:max(table2.Account_ID),但並不是我想要的方式。我似乎注意到MAX給我的問題,好像我不能使用它。有沒有辦法解決它? – Exn

+0

如果沒有分組,則不能使用聚合函數。 – Koryu

相關問題