This is the default join used by SQLite. As such the word inner can be left out of the syntax.
Similar to a cross join, but it is designed to show ONLY those elements that exist in BOTH tables.
As an example, in my books database, which authors have a book with 'astronomy' as a keyword, and what is the title?
select author,title from authors,books join keywords on authors.authorid=keywords.authorid and books.titleid=keywords.titleid and keyword like '%astronomy%' group by author order by title; author title ---------------------------------------- -------------------------- Meeus,Jean Astronomical Algorithms 2E Gibilisco,Stan Astronomy Demystified Brenner,Michael;Sörensen,Pia;Weitz,David Science and Cooking Ball,Johnny Wonders Beyond Numbers
A crucial condition in all database work is that your query results are correct and complete. To that end ...
select titleid,authorid from keywords where keyword like '%astronomy%' group by titleid, keyword; titleid authorid ------- -------- 355 168 442 409 660 600 770 702 select author from authors where authorid in(168,409,600,702) order by author; author ---------------------------------------- Ball,Johnny Brenner,Michael;Sörensen,Pia;Weitz,David Gibilisco,Stan Meeus,Jean select title,titleid from books where titleid in(355,442,660,770) order by title; title titleid -------------------------- ------- Astronomical Algorithms 2E 770 Astronomy Demystified 355 Science and Cooking 660 Wonders Beyond Numbers 442
That looks good.