我有一個問題,我已經搜索並找不到可以提供任何幫助的答案。MySQL - 加入最後一行相關表
有3個表格:orders
,customers
和teams
。每個訂單都有一個客戶和一個團隊。我的問題是,對於每個客戶,我試圖得到他們的總訂單,然後被分配到他們最後一個訂單的團隊。
我的查詢到目前爲止(正常工作):
SELECT c.id, MAX(o.timestamp) AS "Last Order", COUNT(o.id) AS "Total Orders", SUM(o.price) AS "Total Spend"
FROM orders o
LEFT JOIN customers c ON o.customer = c.id
WHERE o.timestamp > '2012-01-01 00:00:00'
GROUP BY c.id
ORDER BY c.id
我無法弄清楚如何加入team.name
他們放置在最後一個順序,而不會影響我有查詢的其餘部分。
示例表和期望的結果:
客戶:
╔════╦═════════════╗
║ ID ║ NAME ║
╠════╬═════════════╣
║ 1 ║ John Smith ║
║ 2 ║ Jim Jimmers ║
╚════╩═════════════╝
團隊:
╔════╦═════════════╗
║ ID ║ NAME ║
╠════╬═════════════╣
║ 1 ║ Red ║
║ 2 ║ Blue ║
╚════╩═════════════╝
訂單:
╔═══════╦═════════════════════╦══════════╦══════╦═══════╗
║ ID ║ TIMESTAMP ║ CUSTOMER ║ TEAM ║ VALUE ║
╠═══════╬═════════════════════╬══════════╬══════╬═══════╣
║ 34656 ║ 2012-03-04 14:23:44 ║ 1 ║ 2 ║ 20 ║
║ 37345 ║ 2012-04-12 11:32:07 ║ 2 ║ 2 ║ 25 ║
║ 38220 ║ 2012-07-18 09:53:54 ║ 1 ║ 2 ║ 15 ║
║ 39496 ║ 2012-07-03 10:11:32 ║ 1 ║ 1 ║ 38 ║
║ 41752 ║ 2012-09-17 19:34:05 ║ 1 ║ 2 ║ 9 ║
║ 43734 ║ 2012-11-23 07:52:12 ║ 2 ║ 1 ║ 20 ║
╚═══════╩═════════════════════╩══════════╩══════╩═══════╝
如何選擇的結果,如:
╔════╦═════════════╦═════════════════════╦═══════════╦══════════════╦═════════════╗
║ ID ║ NAME ║ LAST_ORDER ║ TEAM_NAME ║ TOTAL_ORDERS ║ TOTAL_SPEND ║
╠════╬═════════════╬═════════════════════╬═══════════╬══════════════╬═════════════╣
║ 1 ║ John Smith ║ 2012-09-17 19:34:05 ║ Blue ║ 4 ║ 82 ║
║ 2 ║ Jim Jimmers ║ 2012-11-23 07:52:12 ║ Red ║ 2 ║ 45 ║
╚════╩═════════════╩═════════════════════╩═══════════╩══════════════╩═════════════╝
你能給與期望的結果樣本的記錄,就像你做你以前的問題是什麼? ':)' – 2013-03-04 14:58:04
您需要從團隊表中選擇多少個字段?如果這只是一個字段,那麼簡單的相關查詢就可以做到。 – Bulat 2013-03-04 15:02:55
@JW。當然可以! @Bulat我只需要分配給客戶最後訂單的團隊的名稱 – BadHorsie 2013-03-04 15:13:52