You have duplicate columns because you are querying the SQL server for the columns to display the same data (with SELECT dealing_record.* , Etc.) and then duplicate them.
For example, the column transaction_type.transaction_type_id and the column dealing_record.transaction_type_id will have corresponding rows (otherwise you will not see anything with INNER JOIN ), and you will see these duplicates.
If you want to avoid this problem or at least reduce the risk of duplicate results, improve your query using only the columns that you really need, as @ConradFrix already said. An example would be the following:
SELECT dealing_record.Name ,shares.ID ,shares.Name ,transaction_type.Name ,transaction_type.ID FROM shares INNER JOIN shares ON shares.share_ID = dealing_record.share_id INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;
source share