Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

It's not about flipping. The two concepts are actually commutative. You could in theory create syntax that looks like this:

  FROMCLAUSE * SELECTCLAUSE * WHERECLAUSE = SQLEXPRESSION
  SELECTCLAUSE * WHERECLAUSE * FROMCLAUSE = SQLEXPRESSION
  ...
The issue is that not only does SQL syntax force an artificial order on these clauses, but that these clauses Cannot be decomposed to be used elsewhere. I cannot reuse a WHERECLAUSE or a SELECTCLAUSE in another expression.


Some detail here. What goes on in relational algebra is that the FROMCLAUSE is encoded into an axiomatic primitive called a RELATION and you get stuff like this:

   SELECTCLAUSE(WHERECLAUSE(relation)) = relation
   WHERECLAUSE(SELECTCLAUSE(relation)) = relation
Basically every operation in relational algebra produces a primitive of type RELATION which allows for all operations to be composed like unix pipes.

My example in the previous post has a flaw where it's not clear what:

   SELECTCLAUSE * WHERECLAUSE = ????
will output because there's no meaning to a SQLEXPRESSION without a FROMCLAUSE. But hopefully it illustrates the point. I'm putting this here for anyone who's nitpicky about the details. The relational algebra syntax is much more elegant.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: