upvote
> for personal use and occasional unpaid hobby projects, Ultorg's license is not a good fit.

I had the same issue. I was enamored with the UI Ultorg presented for SQL. However once the pricing came out it felt.. harsh unless i was using a lot of SQL in my work, which i was not. If it was a Jetbrains style license i'd have one now, even though i rarely use DBs in this manner.

reply
This use case is pretty standard in olap such as ease, with writeback and calcs too.
reply
Yep, I have said for long that SQL `GROUP BY` should be that, instead of what is now (that is variation of SUMMARIZE).
reply
SQL forcing all results into a flat table is one of its biggest design flaws. It creates tremendous data duplication.
reply
SQL's biggest design flaw was rejecting the relational model, which leads to the join problems the earlier comment talks about.

The second biggest flaw, which isn't really about SQL itself but in implementation, was attaching SQL to the network where latency starts to become a problem. That requires hacks to work around. It is likely this is why you're seeing data duplication — trading all that duplication to avoid the latency problems.

reply
This is the main reason I love Gel: https://www.geldata.com/

It's a "new database" (actually a layer on top of Postgres). It has a more ergonomic query language, and it returns results as nested structures rather than rows. So "give me all my customers with a list of their orders" returns what you want.

Unfortunately, the startup that was developing Gel got acqui-hired, and Gel's future is unclear.

reply
This is the first link in this thread that points to something innovative, I think. Their UI screenshot does have nested results, for example. No commit to their open-source repository in 11 months is worrisome, though.
reply
If anything a well designed database minimises data duplication. If your query returns duplicate data that's on the writer, not the language's fault.
reply
It is the language's fault, because SQL offers no good way to get nested results. If you want to avoid the duplication, you can do multiple queries, but then you essentially have to do the join on the receiving end, which kind of defeats the purpose of having joins in SQL.

Alternatively, you might use functions to aggregate in the query, but they're not standard, as far I know, which means that interfaces in programming languages often do not support them. The best bet might be aggregating into JSON, but this removes quite a bit of the type information that values in SQL usually carry. (Also, the aggregation functions are generally less pleasant to write than standard joins.)

reply
Yeah, ARRAY_AGG being an optional part of the standard is annoying, and in general the array handling functions have been very non-standardized and messy - it's getting better though!
reply
It minimizes data storage duplication, but not reading. The language does not have a simple way to receive unique records across N-1 joins.
reply
No, that's still the SQL languages' fault because you cannot return multiple tables in a single query.

Half the reason why ORMs have trouble has to do with the fact that you need to fetch has many relations via a second select.

Beyond that, it's the GPPL languages' fault that it doesn't support object or class fragments which are needed to support queries that return a subset of an object.

If people bothered fixing these two issues, then ORMs would be great.

reply