Hacker News new | ask | show | jobs
by preferjq 1519 days ago
Here is a straightforward jq translation

    def stores:
      [
        { "store number" : 1, "state" : "MA" },
        { "store number" : 2, "state" : "MA" },
        { "store number" : 3, "state" : "CA" },
        { "store number" : 4, "state" : "CA" }
      ];
    def sales:
      [
        { "product" : "broiler", "store number" : 1, "quantity" : 20  },
        { "product" : "toaster", "store number" : 2, "quantity" : 100 },
        { "product" : "toaster", "store number" : 2, "quantity" : 50 },
        { "product" : "toaster", "store number" : 3, "quantity" : 50 },
        { "product" : "blender", "store number" : 3, "quantity" : 100 },
        { "product" : "blender", "store number" : 3, "quantity" : 150 },
        { "product" : "socks", "store number" : 1, "quantity" : 500 },
        { "product" : "socks", "store number" : 2, "quantity" : 10 },
        { "product" : "shirt", "store number" : 3, "quantity" : 10 }
      ];
    
    [
        {store: stores[], sale: sales[]}
      | select(.store."store number" == .sale."store number")
      | { nb:    .store."store number",
          state: .store.state,
          sold: .sale.product
        }
    ]
Try it online - https://tio.run/##rZPPUsMgEMbP5Sl2ctIZmklbe6HTg@PZJ8jkkD84Rh...
1 comments

The difference might be that Brackit uses sophisticated join algorithms for these kinds of implicit joins as known from relational query processing.