This repository is private.
All pages are served over SSL and all pushing and pulling is done over SSH.
No one may fork, clone, or view it unless they are added as a member.
Every repository with this icon (
) is private.
Every repository with this icon (
This repository is public.
Anyone may fork, clone, or view it.
Every repository with this icon (
) is public.
Every repository with this icon (
Nick Kallen (author)
Tue Apr 08 01:02:34 -0700 2008
commit 96ed31fe17663d385749aaa5394977e3093879e8
tree 4f18a49cfe782873f62d32e1f70fa9c91c2f8d3a
parent 4e30c5e560cff3c5309169856cb6c699d3fd124e
tree 4f18a49cfe782873f62d32e1f70fa9c91c2f8d3a
parent 4e30c5e560cff3c5309169856cb6c699d3fd124e
| name | age | message | |
|---|---|---|---|
| |
README | Tue Apr 08 01:02:34 -0700 2008 | [Nick Kallen] |
| |
example.html | Tue Apr 08 01:02:34 -0700 2008 | [Nick Kallen] |
| |
jquery.db.js | Tue Apr 08 00:25:16 -0700 2008 | [Nick Kallen] |
README
Today I was thinking aloud about [Tree Regular Expressions](http://research.microsoft.com/Users/luca/Slides/2003-11-13%20Transitions%20in%20Programming%20Models%20\(Li sbon\).pdf) and how they might make a nice query language for document databases like CouchDB. Someone pointed out that CSS3 selectors might make a great concrete syntax for this. One thing lead to another and I thought, why not build a relational database in HTML? So I did. I even got **inner joins** working. Let's start with a few tables: <table class="users"> <tr> <td class="id">1</td> <td class="first_name">amy</td> <td class="last_name">bobamy</td> </tr> ... </table> <table class="photos"> <tr> <td class="id">1</td> <td class="user_id">1</td> <td class="url">http://www.example.com/foo.png</td> </tr> </table> Now we can express some queries: $('.users') .where('.id:eq(1)') .select('*') This is equivalent to `SELECT * FROM users WHERE id = 1` $('.users') .where('.id:eq(1)') .select('.id, .name') This is equivalent to `SELECT id, name FROM users WHERE id = 1`. Here is something slightly more complicated: $('.users') .where('.name:contains(a)') .and('.name:contains(c)') .select('*') But here is **the crowning glory**, the inner join: $('.users') .join('.photos') .where('.photos.user_id:eq(.users.id)') .and('.users.id:eq(1)') .select('.photos.url') This is equivalent to: SELECT photos.url FROM users, photos WHERE photos.user_id = users.id AND users.id = 1 [Download the fun](http://github.com/nkallen/jquery-database/tree/master) at Github.




