My understanding is that inner join will only display master records that have a detail record, whereas outer join will display all master records even if they do not have a detail record. You can find more explanations of the various join modes in the developer help under: SDK->Database->Database Queries->How To: Add Multiple Data Sources to a Query
Just wanted to add something here… You should use Exist Join or Not exist join for fetching only master records it will speed up the performance and for master as well as related table record use inner(include only master record which r related ) or outer join(includes all record of master) …
Join source property basically defines how child ds is connected to parent ds.Join ds poperty can have vales are Active , Passive , delayed , Exist Join , Not exist Join , Inner join , Outer Join . you can find out details abt these in AX SDK inside msdn.