5 void value_route(int nislands, const int *islands) {
6 char stmt[1024+80*nislands+40*nislands*nislands], *sp;
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"
22 " buy.price-sell.price unitprofit\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"
29 for (s=0; s<nislands; s++) {
30 sp += sprintf(sp, "%s(sell.islandid=%d AND (",
33 for (d=s; d<nislands; d++) {
34 sp += sprintf(sp, "%sbuy.islandid=%d",
38 sp += sprintf(sp, "))");
42 " GROUP BY commods.commodid,\n"
43 " sell.islandid, sell.price,\n"
44 " buy.islandid, buy.price\n"
47 assert(sp < stmt + sizeof(stmt) - 1);
49 printf("SQL\n[\n%s\n]\n", stmt);
52 //struct sqlite_vm *sth;
53 //r= sqlite_compile(db, stmt, &tail, &sth,