En double colonnes avec inner Join
SELECT
dealing_record.*
,shares.*
,transaction_type.*
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;
le code SQL ci-dessus produit la sortie désirée mais avec quelques colonnes dupliquées. Aussi, avec affichage incomplet des en-têtes de colonne. Quand je change le
linesize 100
les en-têtes montrent mais les données montrent des chevauchements
j'ai vérifié des questions similaires, mais je ne vois pas comment les résoudre.
2 réponses
vous avez des colonnes dupliquées, parce que, vous demandez au moteur SQL pour les colonnes qu'ils vous montreront les mêmes données (avec SELECT dealing_record.*
et ainsi de suite) , puis les doublons.
Par exemple,transaction_type.transaction_type_id
colonne et l' dealing_record.transaction_type_id
colonne aura lignes correspondantes (sinon vous ne pourrez pas voir quoi que ce soit avec un INNER JOIN
) et vous verrez les doublons.
Si vous voulez éviter ce problème ou, au moins, de réduire le risque d'avoir des doublons dans les résultats, améliorer votre interrogation, en utilisant seulement les colonnes dont vous avez vraiment besoin, comme @ConradFrix l'a déjà dit. Un exemple serait celui-ci:
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;
essayez de joindre des actions avec dealing_record, pas des actions à nouveau:
select dealing_record.*,
shares.*,
transaction_type.*
FROM shares inner join dealing_record on shares.share_ID = dealing_record.share_id
inner join transaction_type on transaction_type.transaction_type_id=
dealing_record.transaction_type_id;