Explain the difference between inner joins, outer joins, and subqueries, and when to use each when querying clinical datasets.