However this does appear to have worked!  Seems a bit long-winded to me but
it worked.  I think - going to compare to the same thing in Excel and just
check the data before I do a happy-dance.

UPDATE tmp_dspace_import
SET diff_used = (SELECT tmp_dspace_import.used_mb - ifnull(prev.used_mb, 0)
FROM tmp_dspace_import AS prev  WHERE tmp_dspace_import.servername =
prev.servername AND tmp_dspace_import.drive = prev.drive AND prev.date_time
< tmp_dspace_import.date_time ORDER BY date_time DESC LIMIT 1),
    diff_free = (SELECT tmp_dspace_import.free_mb - ifnull(prev.free_mb, 0)
FROM tmp_dspace_import AS prev  WHERE tmp_dspace_import.servername =
prev.servername AND tmp_dspace_import.drive = prev.drive AND prev.date_time
< tmp_dspace_import.date_time ORDER BY date_time DESC LIMIT 1),
    diff_free_pc = (SELECT tmp_dspace_import.free_pc - ifnull(prev.free_pc,
0) FROM tmp_dspace_import AS prev  WHERE tmp_dspace_import.servername =
prev.servername AND tmp_dspace_import.drive = prev.drive AND prev.date_time
< tmp_dspace_import.date_time ORDER BY date_time DESC LIMIT 1);



On Tue, Aug 22, 2017 at 11:35 AM, Matthew Halliday <fj1200...@gmail.com>
wrote:

> Hi Clemens, thanks for that.
>
> Unfortunately is comlains after "SET diff_used," and I get "near ",":
> syntax error: "
>
> If I seperate it out into stand-alone statemeonts like this:
>
> UPDATE tmp_dspace_import
> SET diff_used = (SELECT tmp_dspace_import.used_mb - ifnull(prev.used_mb,
> 0) FROM tmp_dspace_import AS prev  WHERE prev.date_time <
> tmp_dspace_import.date_time ORDER BY date_time DESC LIMIT 1),
>     diff_free = (SELECT tmp_dspace_import.free_mb - ifnull(prev.free_mb,
> 0) FROM tmp_dspace_import AS prev  WHERE prev.date_time <
> tmp_dspace_import.date_time ORDER BY date_time DESC LIMIT 1),
>     diff_free_pc = (SELECT tmp_dspace_import.free_pc -
> ifnull(prev.free_pc, 0) FROM tmp_dspace_import AS prev  WHERE
> prev.date_time < tmp_dspace_import.date_time ORDER BY date_time DESC LIMIT
> 1);
>
> then it comes back "no error:" but doesn't update anything.  Not sure if
> the abokve is ok - looks ok to me.  The only question in my mind is that it
> won't diferentiate between servers and drives.SOme only have a C drive but
> most hace a D and E, some have an F.  All local drives btw, not mapped.
>
> On Tue, Aug 22, 2017 at 10:32 AM, Clemens Ladisch <clem...@ladisch.de>
> wrote:
>
>> Matthew Halliday wrote:
>> > I used the SQLite Studio to create the table so used the DATETIME data
>> type
>> > for that, and although I used yyyy-mm-dd hh:mm:ss in the script
>>
>> That is correct.
>>
>> > it seems to have reverted it to dd/mm/yy hh:mm:ss.
>>
>> That would not be usable.
>> Check the actual format with the sqlite3 command-line shell.
>>
>>
>> Assuming the timestamp format is usable, you can compute the differences
>> with a statement like this:
>>
>> -- add three columns; then:
>> UPDATE MyTable
>> SET (diff_used, diff_free, diff_free_pc)
>>   = (SELECT MyTable.used_mb - ifnull(prev.used_mb, 0),
>>             MyTable.free_mb - ifnull(prev.free_mb, 0),
>>             MyTable.free_pc - ifnull(prev.free_pc, 0)
>>      FROM MyTable AS prev
>>      WHERE prev.date_time < MyTable.date_time
>>      ORDER BY date_time DESC
>>      LIMIT 1);
>>
>> This is much faster if there is an index on date_time.
>>
>>
>> Regards,
>> Clemens
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@mailinglists.sqlite.org
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>>
>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to