2017-10-18 27 views
-1

私は日の最後の「数」内の私のSQLテーブルにある出力データのみ(ipaccounting)、コラム(timeanddate)に私のクエリを変更しようとしています選択データ

ipaccounting,timeanddateに格納されているデータは、「2017-10-16 07:45:53」のようになり、datapackages,thresholdtimespandaysは「7」のような実数にすぎません((データ型))。今から過去7日間)私は私のクエリで/変更を追加するには何が必要です

私の現在のクエリは次のとおりです。

SELECT ip_address 
     ,SUM(upload_bytes) as upload_bytes 
     ,SUM(download_bytes) as download_bytes 
     ,sum(upload_bytes + download_bytes) as totalbytes 
     ,package_id 
     ,username 
     ,networkaccess 
     ,packagename 
     ,speedlimit 
     ,threshold 
     ,throttlelimit 
     ,datalimitamount 
     ,datalimitrange 
     ,thresholdtimespandays 
FROM (
     (SELECT ipaccounting.src_address as ip_address 
      ,SUM(ipaccounting.bytes) AS upload_bytes 
      ,0 as download_bytes 
      ,users.username 
      ,users.networkaccess 
      ,datapackages.package_id 
      ,datapackages.packagename 
      ,datapackages.speedlimit 
      ,datapackages.threshold 
      ,datapackages.throttlelimit 
      ,datapackages.datalimitamount 
      ,datapackages.datalimitrange 
      , datapackages.thresholdtimespandays 
     FROM ipaccounting 
     join users on users.ipaddress = ipaccounting.src_address 
     join datapackages on datapackages.package_id = users.datapackage 
     WHERE dst_address NOT BETWEEN INET_NTOA('192.168.0.1') AND INET_NTOA('192.168.255.254') 
     GROUP BY src_address) 

     UNION ALL 

     (SELECT ipaccounting.dst_address as ip_address 
      ,0 AS upload_bytes 
      ,SUM(ipaccounting.bytes) as download_bytes 
      ,users.username 
      ,users.networkaccess 
      ,datapackages.package_id 
      ,datapackages.packagename 
      ,datapackages.speedlimit 
      ,datapackages.threshold 
      ,datapackages.throttlelimit 
      ,datapackages.datalimitamount 
      ,datapackages.datalimitrange 
      ,datapackages.thresholdtimespandays 
     FROM ipaccounting 
     join users on users.ipaddress = ipaccounting.dst_address 
     join datapackages on datapackages.package_id = users.datapackage 
     WHERE src_address NOT BETWEEN INET_NTOA('192.168.0.1') AND INET_NTOA('192.168.255.254') 
     GROUP BY dst_address) 
     ) a 
GROUP BY ip_address 
ORDER BY INET_ATON(ip_address) 

私は私のデータベースdatapackages,thresholdtimespandaysに指定された日の量とそれを現在の時刻とマイナスを取り、その後、データを配るする方法がわからないです。

ありがとう:)ありがとう:)

+0

https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry

+0

自分自身を繰り返す危険があります... – Strawberry

+0

心配しないで、私はそれを理解しました。 –

答えて

0

私は遊んだし、自分自身を考え出した!

私の更新クエリは次のとおりです。

SELECT ip_address 
    ,SUM(upload_bytes) as upload_bytes 
    ,SUM(download_bytes) as download_bytes 
    ,sum(upload_bytes + download_bytes) as totalbytes 
    ,package_id 
    ,username 
    ,networkaccess 
    ,packagename 
    ,speedlimit 
    ,threshold 
    ,throttlelimit 
    ,datalimitamount 
    ,accountingdays 
FROM (
    (SELECT ipaccounting.src_address as ip_address 
     ,SUM(ipaccounting.bytes) AS upload_bytes 
     ,0 as download_bytes 
     ,users.username 
     ,users.networkaccess 
     ,datapackages.package_id 
     ,datapackages.packagename 
     ,datapackages.speedlimit 
     ,datapackages.threshold 
     ,datapackages.throttlelimit 
     ,datapackages.datalimitamount 
     ,datapackages.accountingdays 
    FROM ipaccounting 
    join users on users.ipaddress = ipaccounting.src_address 
    join datapackages on datapackages.package_id = users.datapackage 
    WHERE dst_address NOT BETWEEN INET_NTOA('192.168.0.1') AND 
INET_NTOA('192.168.255.254') 
    and timeanddate BETWEEN SUBDATE(CURRENT_TIMESTAMP(), INTERVAL 
datapackages.accountingdays DAY) AND CURRENT_TIMESTAMP() 
    GROUP BY src_address) 

    UNION ALL 

    (SELECT ipaccounting.dst_address as ip_address 
     ,0 AS upload_bytes 
     ,SUM(ipaccounting.bytes) as download_bytes 
     ,users.username 
     ,users.networkaccess 
     ,datapackages.package_id 
     ,datapackages.packagename 
     ,datapackages.speedlimit 
     ,datapackages.threshold 
     ,datapackages.throttlelimit 
     ,datapackages.datalimitamount 
     ,datapackages.accountingdays 
    FROM ipaccounting 
    join users on users.ipaddress = ipaccounting.dst_address 
    join datapackages on datapackages.package_id = users.datapackage 
    WHERE src_address NOT BETWEEN INET_NTOA('192.168.0.1') AND 
INET_NTOA('192.168.255.254') 
    and timeanddate BETWEEN SUBDATE(CURRENT_TIMESTAMP(), INTERVAL 
datapackages.accountingdays DAY) AND CURRENT_TIMESTAMP() 
    GROUP BY dst_address) 
    ) a 
GROUP BY ip_address 
ORDER BY INET_ATON(ip_address) 

私は私のクエリは私の質問から少し異なるものになりますようにdatapackage.accountingdaysからdatapackage.thresholdtimespandaysとしてだけでなく、私のデータベースにいくつかの変更をも行いました。