2017-06-12 103 views
3

這是我在stackoverflow中的第一個問題,我希望我能很快得到我的問題的答案。 :)我試圖從其他來源搜索相當一段時間,但不幸的是,找不到工作答案。SQL選擇一個表中的所有列和另一個表上另一列的最大值

所以,我工作的一個項目,因爲我是一個新手,以SQL中,我不能做到這一點:

我有2個表:

「客戶」同列「ID」,「名稱「 」姓「( 」ID「 是主鍵)
」會話「 的列 」ID「, 」客戶「, 」entrydate 「從」 會話「( 」ID「 是主鍵)

」 客戶「與」客戶「中的」id「綁定。 (外鍵)

我需要一個查詢,它返回來自表「客戶」的所有列,並有一列顯示每個客戶的最新「會話」記錄的入口日期。正如你所想象的,「會話」表可能有許多個人「客戶」記錄的記錄。

非常感謝大家,希望能很快得到答案。

+0

? Postgres的?甲骨文? –

回答

3

我可能失去了一些東西真的很明顯,但是這聽起來真的很基本的SQL你在SQL教程 https://www.w3schools.com/SQL/sql_groupby.asp

SELECT C.name,c.lastName,MAX(S.entryDate) FROM customers C 
inner join Sessions S ON S.CustomerId=C.Id 
group by C.name,C.lastName 
+0

馬克,你不會錯過任何東西...... :)我們都從某個地方開始,對吧?說實話,我在設計一個子查詢之後設法讓它工作,但你的方法似乎更容易。實際上,在我列出問題之前,我嘗試了您的方法,但是我的語法錯了,而且我收到了一個錯誤...敬請期待,因爲未來我可能需要您的幫助,希望能夠進行更復雜的查詢。 :)再次感謝。 –

+0

對不起@JohnKastana我不是故意要這樣,但也許你會從一些教程中受益,也許像簡單的購物車/客戶,訂單,交付教程會幫助很多。在使用SQL時,我可以給你的最好建議不是思考單個項目,而是思考集合論。值得谷歌。 – Mark

1

它的那樣簡單的是找到那種。

SELECT C.id,C.name,c.lastName,MAX(S.entryDate) as lastEntry FROM customers C join Sessions S ON S.CustomerId=C.Id group by C.id

哪個[DBMS](https://en.wikipedia.org/wiki/DBMS)您使用
+0

Osaf,也非常感謝您的幫助。 –

相關問題