簡體   English   中英

sql從兩個表聯接數據

[英]sql join data from two tables

我想知道是否有人幫助我從兩個表中聯接數據...整天都無法管理...

代碼1選擇:年| 周轉1 | 數量1 | EurPerOrder1

SELECT Year(table1.ContractDate) AS Year,
  Sum(table1.TPrice) AS Turnover1,
  Count(table1.id) AS Quantity1,
  ROUND(Sum(table1.TPrice) / Count(table1.id), 0) AS EurPerOrder1
FROM table1
GROUP BY Year(table1.ContractDate) * 100
ORDER BY table1.ContractDate DESC         

Code2選擇:年| 營業額2 | Quantiry2 | EurPerOrder2

SELECT Year(table2.date) AS Year,
  Sum(table2.price) AS Turnover2,
  Count(table2.rid) AS Quantiry2,
  ROUND(Sum(table2.price) / Count(table2.rid), 0) AS EurPerOrder2
FROM table2
GROUP BY Year(table2.date) * 100
ORDER BY table2.date DESC

我需要加入如下數據:

年份 周轉1 | 數量1 | EurPerOrder1 | 營業額2 | Quantiry2 | EurPerOrder2

我需要將兩個表中的所有數據按年份分組。 甚至table2都沒有2013年,我希望它顯示0或為空...我嘗試使用示例以其他方式進行操作,但沒有任何效果,因此我認為可能會出現此問題,因為第二個表沒有table1上的所有年份。 ..

首先:您可以在此處閱讀有關JOINS很好的解釋

好的,根據您需要的問題LEFT JOIN 這意味着來自table1所有數據,並且僅來自table2匹配數據。

SELECT必須看起來像:

SELECT Year(table1.ContractDate) AS Year,
  Sum(table1.TPrice) AS Turnover1,
  Count(table1.id) AS Quantiry1,
  ROUND(Sum(table1.TPrice) / Count(table1.id), 0) AS EurPerOrder1, 
    Sum(table2.price) AS Turnover2,
    Count(table2.rid) AS Quantiry2, 
  ROUND(Sum(table2.price) / Count(table2.rid), 0) AS EurPerOrder2 
FROM 
    table1 t1
    LEFT JOIN table2 t2 ON Year(table1.ContractDate) = Year(table2.date)
GROUP BY 
    Year(table1.ContractDate) * 100, Year(table2.date) * 100
ORDER BY 
    table1.ContractDate DESC, table2.date DESC

當然,您需要處理NULL值。 鏈接

如果有錯誤,請檢查SQL並更正它。 我沒有要檢查的實時數據(通過運行它)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM