chiark / gitweb /
67785239c473297ac1201f39cfca51834d36d8f6
[ypp-sc-tools.db-test.git] / yarrg / rsvalue.c
1 /**/
2
3 #include "rscommon.h"
4
5 void value_route(int nislands, const int *islands) {
6   char stmt[1024+80*nislands+40*nislands*nislands], *sp;
7   int s,d;
8   
9   sp= stmt;
10   sp += sprintf(sp,
11                 "SELECT\n"
12                 " sell.islandid         src_id,\n"
13                 " sell.price            src_price,\n"
14                 " sum(sell.qty)         src_qty,\n"
15                 " buy.islandid          dst_id,\n"
16                 " buy.price             dst_price,\n"
17                 " sum(buy.qty)          dst_qty,\n"
18                 " commods.commodid      commodid,\n"
19                 " commods.unitmass      unitmass,\n"
20                 " commods.unitvolume    unitvolume,\n"
21                 " dist                  dist,\n"
22                 " buy.price-sell.price  unitprofit\n"
23                 " FROM commods\n"
24                 " JOIN sell ON commods.commodid = sell.commodid\n"
25                 " JOIN buy  ON commods.commodid = buy.commodid\n"
26                 " JOIN dists ON aiid = sell.islandid AND biid = buy.islandid\n"
27                 " WHERE buy.price > sell.price\n"
28                 "       AND (");
29   for (s=0; s<nislands; s++) {
30     sp += sprintf(sp, "%s(sell.islandid=%d AND (",
31                   !s ? "" : "\n   OR ",
32                   islands[s]);
33     for (d=s; d<nislands; d++) {
34       sp += sprintf(sp, "%sbuy.islandid=%d",
35                     d==s ? "" : " OR ",
36                     islands[d]);
37     }
38     sp += sprintf(sp, "))");
39   }
40   sp += sprintf(sp,
41                 ")\n"
42                 " GROUP BY commods.commodid,\n"
43                 "       sell.islandid, sell.price,\n"
44                 "       buy.islandid, buy.price\n"
45                 );
46
47   assert(sp < stmt + sizeof(stmt) - 1);
48
49   printf("SQL\n[\n%s\n]\n", stmt);
50
51   //char *tail;
52   //struct sqlite_vm *sth;
53   //r= sqlite_compile(db, stmt, &tail, &sth, 
54 }