簡體   English   中英

連接兩個Mysql表和分組列

[英]Joining two Mysql tables and grouping columns

我在mysql中獲得所需的結果有一個小問題。

我有兩個表,如下所示(僅包括相關列):

CREATE TABLE vehicle_log
(id int(11) NOT NULL
,date date NOT NULL
,fuel_taken varchar(40) NOT NULL
,vehicle varchar(6) NOT NULL )

CREATE TABLE fuel_log
(id int(11) NOT NULL
,date date NOT NULL
,fuel_taken varchar(40) NOT NULL
,vehicle varchar(6) NOT NULL 
)

我的問題是要得到一個返回將車輛和日期列分組的表的結果,同時還要給出其他兩個fuel_amount列的總和,如下所示:

date       vehicle fuel_by_receipt fuel_by_log
2016-01-01 KKK222              150        NULL
2016-01-01 KKK252              100         150
2016-01-31 KKK222              120        NULL
2016-02-10 KKK252              100        NULL
2016-02-15 KKK252               50        NULL
2016-11-10 KKK252               20        NULL
2016-11-17 KKK252               10        NULL
2016-01-31 KKK252             NULL          90

用法是比較每個表中特定車輛和日期的fuel_amount列,以查看是否存在任何差異並警告用戶。 那將在php中完成,但這不是這個問題的主題。

另外,我需要返回條目,以便它必須在日期范圍+上個月的最后一個條目內。 (我已經有月份,上個月的計算),我只是不知道如何在查詢中包括它。

我在考慮使用WHERE子句,以便:

日期<=結束日期AND日期> =開始日期

但是我似乎只選擇上個月的最后一個條目有問題。

這是我到目前為止的內容:

 SELECT f.date
      , f.vehicle
      , SUM(f.fuel_taken) fuel_by_receipt
      , SUM(v.fuel_taken) fuel_by_log
   FROM fuel_log  f
   LEFT 
   JOIN vehicle_log  v
     ON v.vehicle = f.vehicle 
    AND v.date = f.date  
  GROUP 
     BY f.date
      , f.vehicle
      , v.date     #<-- THIS LINE IS REDUNDANT
      , v.vehicle  #<-- AND SO IS THIS 

 UNION 

 SELECT f.date
      , f.vehicle
      , SUM(f.fuel_taken) fuel_by_receipt
      , SUM(v.fuel_taken) fuel_by_log 
   FROM fuel_log f
  RIGHT            #<-- NOBODY EVER USES RIGHT JOIN
   JOIN vehicle_log v
     ON v.vehicle = f.vehicle 
    AND v.date = f.date  
  GROUP 
     BY f.date
      , f.vehicle
      , v.date     #<- THIS IS REDUNDANT
      , v.vehicle  #<- AND SO IS THIS

可能是我從一個非常糟糕的角度來解決這個問題,因此,如果您有任何建議使用更好,更輕松的方法,我將非常高興。

感謝您的幫助。

您有興趣比較兩個表之間的日期工具組合。 因此,您應該首先獲取一個的按日期和車輛分組的SUM,然后將其加入另一個的按日期分組的車輛SUMS。 因此,不是首先加入表的單個記錄,而是加入分組的SUM。

在執行此操作之前,您應該首先獲取所有可能的數據/車輛組合(通過在UNION中選擇兩個表的日期和車輛值並應用DISTINCT)。 將上述操作的結果與此表一起添加到日期/車輛字段中。 希望這能給您啟發!

暫無
暫無

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

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